我有一个数据组,它看起来像以下的(部分):
id name dummy
1 Jane 1
1 Jane 0
1 Jane 1
2 Mike 0
2 Mike 0
2 Mike 0
2 Mike 0
2 Mike 0
3 Tom 1
3 Tom 1
3 Tom 0
3 Tom 0
我试图消除人们在可变
dummy
的全部为0。因此,举例来说,Tom
和Jane
不会被淘汰,因为他们有dummy
变量0或1,但Mike
就会被淘汰,因为他有全0。所以,我想到底 id name dummy
1 Jane 1
1 Jane 0
1 Jane 1
3 Tom 1
3 Tom 1
3 Tom 0
3 Tom 0
我想过根据
dummy
对数据框进行排序,但我似乎无法弄清楚如何处理这样一个事实,即我只是试图消除变量 dummy
仅有 0 个值的人。任何建议将是真正的帮助! 最佳答案
考虑df
是你data.frame,然后使用tapply
和[
于子集你想要什么:
> ind <- with(df, tapply(dummy, name, sum))
> df[df$name %in% names(ind)[ind!=0], ]
id name dummy
1 1 Jane 1
2 1 Jane 0
3 1 Jane 1
9 3 Tom 1
10 3 Tom 1
11 3 Tom 0
12 3 Tom 0
另一种选择:
> result <- split(df, df$name)[with(df, tapply(dummy, name, function(x) sum(x)!=0))]
> do.call(rbind, result)
关于r - 如何根据列值的条件选择行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20808724/