删除一个id R的所有行

use*_*642 0 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
Run Code Online (Sandbox Code Playgroud)

汤姆有一个二元指标.因为他有这个,我想删除所有汤姆的行.

期望的输出是

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
Run Code Online (Sandbox Code Playgroud)

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

Jil*_*ina 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
Run Code Online (Sandbox Code Playgroud)

或使用 subset

> df <- subset(df, names != "tom")
Run Code Online (Sandbox Code Playgroud)

更新: 根据你的upate,试试这个:

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