我有一个看起来像这样的数据集:
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循环尝试了不同的方法,但是没有用。有人会知道一个简单的解决方案吗?
谢谢!
答案 0 :(得分:2)
Base 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
答案 1 :(得分:1)
使用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