删除一个id R的所有行

时间:2013-12-10 14:56:26

标签: r rows

我有一个简单的查询 - 并且已经搜索过,因为我认为它可能在之前出现过,但是没有找到合适的答案。所以这里:

我的df如下

names   drugs      dates olds
4   john A02BC01 2010-05-01    0
6   john C09AA03 2010-08-01    0
11  john N02AA01 2010-06-14    0
2   mary C09AA03 2010-06-01    0
3   mary C10AA07 2010-07-01    0
7   mary A02BC01 2010-07-01    0
9   mary C10AA07 2010-07-24    0
1    tom C10AA05 2010-04-06    0
5    tom C10AA05 2009-12-01    1
8    tom C10AA05 2010-08-01    0
10   tom C07AB03 2010-05-12    0
汤姆有一个二元指标。因为他有这个,我想删除所有汤姆的行。

所需的输出是

names   drugs      dates olds
4   john A02BC01 2010-05-01    0
6   john C09AA03 2010-08-01    0
11  john N02AA01 2010-06-14    0
2   mary C09AA03 2010-06-01    0
3   mary C10AA07 2010-07-01    0
7   mary A02BC01 2010-07-01    0
9   mary C10AA07 2010-07-24    0

如果我错过了相关的帖子道歉,请提前感谢您的帮助!

2 个答案:

答案 0 :(得分:5)

考虑df是您的data.frame,然后尝试:

> (df <- df[df[, "names" ] != "tom", ])
   names   drugs      dates olds
4   john A02BC01 2010-05-01    0
6   john C09AA03 2010-08-01    0
11  john N02AA01 2010-06-14    0
2   mary C09AA03 2010-06-01    0
3   mary C10AA07 2010-07-01    0
7   mary A02BC01 2010-07-01    0
9   mary C10AA07 2010-07-24    0

或使用subset

> df <- subset(df, names != "tom")

<强>更新 根据你的意见,试试这个:

> ind <- with(df, tapply(olds, names, function(x) sum(x)!=0))
> df[df$names %in% levels(df$names)[!ind], ]

答案 1 :(得分:4)

未经测试的代码,但它应该让您知道您需要做什么 -

toremove <- unique(df[df$olds == 1,"names"])
df2 <- df[! df$names %in% toremove , ]