我有这样的数据框(df):
col1 col2
a 2
a 3
b 7
b 5
c 4
c 2
c 1
d 5
d 7
即;
df<-data.frame(col1=c("a","a","b","b","c","c","c","d","d"), col2=c(2,3,7,5,4,2,1,5,7))
所需的输出数据帧(df1)是:
col1 col2
b 7
b 5
d 5
d 7
例如,
col1中的第一行df为2.相关的col1值为&#34; a&#34;。然后删除包含&#34; a&#34;的所有行。在col1。以相同的方式,col2的第6行等于2.相关的col1值等于&#34; c&#34;。然后删除包含&#34; c&#34;的所有行。在col1。
我怎么能用R做到这一点?我会很高兴得到任何帮助。非常感谢。
答案 0 :(得分:2)
你可以尝试
library(data.table)
setDT(df)[, .SD[!col1 %in% col1[col2==2]]]
# col1 col2
#1: b 7
#2: b 5
#3: d 5
#4: d 7
或使用dplyr
library(dplyr)
filter(df, !col1 %in% col1[col2==2])
答案 1 :(得分:2)
基础解决方案subset
。
subset(df,!col1%in%col1[col2==2])