错误dplyr总结

时间:2014-09-18 22:51:47

标签: r dplyr

我有一个data.frame:

set.seed(1L)
vector <- data.frame(patient=rep(1:5,each=2),medicine=rep(1:3,length.out=10),prob=runif(10))

我希望在按患者分组时获得“prob”列的平均值。我使用以下代码执行此操作:

vector %>%
    group_by(patient) %>%
    summarise(average=mean(prob))

此代码完美有效。但是,我需要在“汇总”行中不使用“prob”一词来获得相同的值。我尝试了下面的代码,但它给了我一个data.frame,其中“average”列是一个具有5个相同值的向量,这不是我想要的:

vector %>%
        group_by(patient) %>%
        summarise(average=mean(vector[,3]))
PD:为了理解我为什么需要这个,我有另一个数据框,其中包含多个具有复杂名称的列,需要“汇总”,这就是为什么我不能一个一个地放在summaryrize命令上。我想要的是在那里放一个载体来计算患者分组的每列的probs。

1 个答案:

答案 0 :(得分:4)

您似乎想要summarise_each

vector %>%
    group_by(patient) %>%
    summarise_each(funs(mean), vars= matches('prop'))

使用data.table可以做到

setDT(vector)[,lapply(.SD,mean),by=patient,.SDcols='prob')