【发布时间】:2015-01-24 21:25:42
【问题描述】:
require('dplyr')
set.seed(8)
df <- data.frame(v1=rnorm(5),
v2=rnorm(5),
v3=rnorm(5))
如果我要计算上面的值的数量,比如 0 并将其放在一个新列中,我会这样做:
mutate(df, n=apply(df,1,function(x)sum(x>0)))
这将给出:
v1 v2 v3 n
1 -0.08458607 -0.1078814 -0.75979380 0
2 0.84040013 -0.1702891 0.29204986 2
3 -0.46348277 -1.0883317 0.42139859 1
4 -0.55083500 -3.0110517 -1.29448908 0
5 0.73604043 -0.5931743 0.06928509 2
现在我想使用dplyrwith 链接并在列子集v1 和v2 上做同样的事情,但不知道如何应用正确的数据。如果我只是这样做(在再次引起df之后):
df %>%
select(v1, v2) %>%
mutate(n=apply(df,1,function(x)sum(x>0)))
...给出与上面相同的结果(相同的n,即它在所有三列中都计数),同时使用. 或只是空白传递数据:不起作用。
df %>%
select(v1, v2) %>%
mutate(n=apply(.,1,function(x)sum(x>0)))
或:
df %>%
select(v1, v2) %>%
mutate(n=apply(1,function(x)sum(x>0)))
怎么了?
【问题讨论】: