我有一个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。
答案 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')