我有一个数据框,我想用dplyr的mutate()函数创建一个新列prob
。 prob
应包含概率P(行值>所有列值),表示数据框中行数比每行的值大。这是我想做的事:在sum()函数中使用dplyr的mutate()函数使用列函数
data = data.frame(value = c(1,2,3,3,4,4,4,5,5,6,7,8,8,8,8,8,9))
require(dplyr)
data %>% mutate(prob = sum(value < data$value)/nrow(data))
这得出以下结果:
value prob
1 1 0
2 2 0
3 3 0
4 3 0
... ... ...
这里prob
只包含0的每一行。如果我在表达sum(value < data$value)
与2
替换value
:
data %>% mutate(prob = sum(2 < data$value)/nrow(data))
我得到以下的结果:
value prob
1 1 0.8823529
2 2 0.8823529
3 3 0.8823529
4 3 0.8823529
... ... ...
0.8823529的概率是有在数据帧大于2值的行。问题似乎是mutate()函数不接受value
列作为sum()
函数中的参数。
'mutate'? 'dplyr'?你想要'sapply(data $ value,function(x)sum(x agstudy 2014-10-05 08:52:36
谢谢!保持简单 - 好主意...... – Simen 2014-10-05 09:01:34
@Simen,你可以调整agstudy的代码到dplyr:data%>%mutate(prob = sapply(value,function(x)sum(x
KFB
2014-10-05 11:56:48