使用r删除所有列中具有相同值的行

  • 本文关键字:删除 使用 r dataframe
  • 更新时间 :
  • 英文 :


我有以下数据集,如果它们都是空的,或者在所有列中具有相同的值,我需要删除它们:

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

最新更新