【发布时间】:2017-08-03 05:37:44
【问题描述】:
我有一个数据集,我想在其中过滤不同组中的行。
鉴于此数据框:
group = as.factor(c(1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3))
fruit = as.factor(c("apples", "apples", "apples", "oranges",
"oranges", "apples", "oranges",
"bananas", "bananas", "oranges", "bananas"))
hit = c(1, 0, 1, 1,
0, 1, 1,
1, 0, 0, 1)
dt = data.frame(group, fruit, hit)
dt
group fruit hit
1 apples 1
1 apples 0
1 apples 1
1 oranges 1
2 oranges 0
2 apples 1
2 oranges 1
3 bananas 1
3 bananas 0
3 oranges 0
3 bananas 1
我想使用组内第一次出现的fruit 来过滤组。但是还有另一个条件,我只想保留hit 等于1 的那个水果的行。
所以,对于group 1,apples 是第一次出现,它有两次正面命中,因此我想保留这两行。
结果如下所示:
group fruit hit
1 apples 1
1 apples 1
2 oranges 1
3 bananas 1
3 bananas 1
我知道你可以使用dplyr 进行过滤,但我不确定我是否能做到这一点。
【问题讨论】:
-
是的,您可以使用
dplyr来实现这一点(很容易)。只需看一下小插图,您就会找到一种方法:cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html -
谢谢,我会调查的!