我有以下数据
Sample_ID<-c("a1_01_01","a2_03_03","a3_07_07","a4_09_09","a5_10_10","a6_21_21")
Sex<-c(M, M, F, F, M, NM)
DF1<-data.frame(Sample_ID,Sex)
我想在以下列表的基础上对 df 进行子集化。
Excluded <-c(a1_01, a3_07, a5_10)
我正在使用此代码来执行
Newdf<-subset(DF1,Sample_ID %in% Excluded)
但它不起作用,因为您可以看到 Excluded
和 Sample_ID
并不完全相同,但它们的首字母相似。我有一个想法,我需要使用 grep
通过管道传输 R 命令,但不知道如何操作。有人可以帮助我或者是否有其他更好的简单方法。
最佳答案
你可以这样做:
DF1[!grepl(paste(Excluded, collapse = "|"), DF1$Sample_ID),]
#> Sample_ID Sex
#> 2 a2_03_03 M
#> 4 a4_09_09 F
#> 6 a6_21_21 NM
这通过创建一个正则表达式来查找示例
中的任何字符串并通过逻辑否定和子集排除它们来实现。
关于r - 使用 grep 对数据框进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71381065/