首页 文章

错误dplyr总结

提问于
浏览
0

我有一个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 回答

  • 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')
    

相关问题