我有以下数据集,如果它们都是空的,或者在所有列中具有相同的值,我需要删除它们:
df <- data.frame(players=c('', 'Uncredited', 'C', 'D', 'E'),
assists=c("", "Uncredited", 4, 4, 3),
ratings=c("", "Uncredited", 4, 7, ""))
df
players assists ratings
<chr> <chr> <chr>
Uncredited Uncredited Uncredited
C 4 4
D 4 7
E 3
在我们的示例中,第一行全为空,第二行具有相同的Uncredited
值。因此,前两行将被删除。
期望输出值
players assists ratings
<chr> <dbl> <chr>
C 4 4
D 4 7
E 3
如有任何建议,不胜感激。谢谢!
我们可以用if_any
library(dplyr)
df %>%
filter(if_any(assists:ratings, ~ .x != players))
与产出
players assists ratings
1 C 4 4
2 D 4 7
3 E 3
可以使用apply循环遍历所有行,并筛选具有多个不同值的行。请注意,如果一行中的所有值都为空,则该行也只有一个不同的值,因此第一个条件是第二个条件的一部分。
df[apply(df,
MARGIN = 1, # rowwise
FUN = function(x) length(unique(x)) > 1), ]
#> players assists ratings
#> 3 C 4 4
#> 4 D 4 7
#> 5 E 3