繁体   English   中英

如何使用子集从数据框中删除行?

[英]How to remove rows from a data frame using a subset?

我在名为 Retest_data 的数据框中有一列,如下所示:

SFC
YU006UGD31092
YU006UGD31071
YU006UGD30152
YU006UGD25831
YU006UGD25831
YU006UGD25332
YU006UG922912
YU006UG922912

我想要的是删除出现不止一次的所有值实例。 所以像 unique 和 distinct 这样的 dplyr 函数对我不起作用。

我还有一个名为 Remove_SFC 的列表,其中包含多次出现的所有 SFC 值。 如何使用此列表从我的数据中删除所有重复值? 谢谢。

数据:

df <- data.frame(SFC = c("YU006UGD31092","YU006UGD31071",
                         "YU006UGD30152",
                         "YU006UGD25831",
                         "YU006UGD25831",
                         "YU006UGD25332" ,
                         "YU006UG922912",
                         "YU006UG922912"))

代码:

df %>% 
  group_by(SFC) %>% 
  filter(n() == 1)

输出:

  SFC          
  <chr>        
1 YU006UGD31092
2 YU006UGD31071
3 YU006UGD30152
4 YU006UGD25332

编辑:

如果您有列表,您还可以执行以下操作:

df %>% 
  filter(!(SFC %in% Remove_SFC))

作为替代方案,您可以使用dplyranti_join anti_joindf返回所有行,而在Remove_SFC没有匹配Remove_SFC

library(dplyr)

df %>% 
  anti_join(data.frame(SFC=Remove_SFC))

返回

Joining, by = "SFC"
            SFC
1 YU006UGD31092
2 YU006UGD31071
3 YU006UGD30152
4 YU006UGD25332

数据

Remove_SFC <- c("YU006UG922912", "YU006UGD25831")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM