当元素匹配列表时删除行
Delete rows when element matches a list
我有一个如下所示的数据集:
Col1 Col2
0.7 AA
0.6 BBB
0.2 RR
0.8 TTT
0.0 SS
还有另一个类似的数据集
List
BBB
RR
TTT
当第二列的值与第二个数据集中列出的任何名称都不匹配时,我想从第一个数据集中删除行。最终产品将如下所示:
Col1 Col2
0.6 BBB
0.2 RR
0.8 TTT
我找不到在 R 中 运行 这个的简单方法。我尝试了不同的 for 和 if 循环,但没有用。有人知道一个简单的解决方案吗?
谢谢!
基础 R 解决方案:
数据集:
df1=read.table(text="Col1 Col2
0.7 AA
0.6 BBB
0.2 RR
0.8 TTT
0.0 SS",header=T)
df2=read.table(text="List
BBB
RR
TTT",header=T)
代码:
df1[df1$Col2 %in% df2$List,]
输出:
Col1 Col2
2 0.6 BBB
3 0.2 RR
4 0.8 TTT
使用data.table:
dt <- data.table(Col1 = c(0.7, 0.6, 0.2, 0.8, 0), Col2 = c("AA", "BBB", "RR", "TTT", "SS"))
myList <- list("BBB", "RR", "TTT")
dt[Col2 %in% myList]
给你:
Col1 Col2
1: 0.6 BBB
2: 0.2 RR
3: 0.8 TTT
我有一个如下所示的数据集:
Col1 Col2
0.7 AA
0.6 BBB
0.2 RR
0.8 TTT
0.0 SS
还有另一个类似的数据集
List
BBB
RR
TTT
当第二列的值与第二个数据集中列出的任何名称都不匹配时,我想从第一个数据集中删除行。最终产品将如下所示:
Col1 Col2
0.6 BBB
0.2 RR
0.8 TTT
我找不到在 R 中 运行 这个的简单方法。我尝试了不同的 for 和 if 循环,但没有用。有人知道一个简单的解决方案吗?
谢谢!
基础 R 解决方案:
数据集:
df1=read.table(text="Col1 Col2
0.7 AA
0.6 BBB
0.2 RR
0.8 TTT
0.0 SS",header=T)
df2=read.table(text="List
BBB
RR
TTT",header=T)
代码:
df1[df1$Col2 %in% df2$List,]
输出:
Col1 Col2
2 0.6 BBB
3 0.2 RR
4 0.8 TTT
使用data.table:
dt <- data.table(Col1 = c(0.7, 0.6, 0.2, 0.8, 0), Col2 = c("AA", "BBB", "RR", "TTT", "SS"))
myList <- list("BBB", "RR", "TTT")
dt[Col2 %in% myList]
给你:
Col1 Col2
1: 0.6 BBB
2: 0.2 RR
3: 0.8 TTT