【发布时间】:2015-03-23 18:54:26
【问题描述】:
我有这样一个数据框(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 值为“a”。然后删除 col1 中包含“a”的所有行。同理,col2 的第 6 行等于 2。相关 col1 的值等于“c”。然后删除 col1 中所有包含“c”的行。
如何使用 R 来做到这一点?我会很高兴得到任何帮助。非常感谢。
【问题讨论】:
-
对不起。我的意思是添加一个简短的解释。它很脏,但它只是根据条件对 df 进行子集。它找到那些 col2 值小于或等于 2 的唯一 col1 值,并将它们从 df 中删除。
df[-which(df$col1 %in% unique(df$col1[which(df$col2 <=2)])),] -
我不知道你在问什么:
df[with(df, ave(col2 == 2, col1, FUN = Negate(any))), ]? -
@Ted Dallas,也感谢您的解决方案:)。还要感谢 rawr:)。
标签: r