R-以相关值为条件对数据帧进行子集

时间:2015-03-23 18:54:27

标签: r

我有这样的数据框(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做到这一点?我会很高兴得到任何帮助。非常感谢。

2 个答案:

答案 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])