【问题标题】:Do dplyr group by stats for multiple columns, store resulting tables in a list, and combine the list as a dataframe对多列执行 dplyr 分组统计,将结果表存储在列表中,并将列表组合为数据框
【发布时间】:2019-08-18 23:07:50
【问题描述】:

进行聚类分析,有一个包含一堆不同属性列的数据框和一个用于聚类标签的列。需要总结这些数据。

进行 groupby sum 操作,我想对我的数据框中的多个列执行此操作,并且需要将生成的 tibble 存储在列表中,最后将它们放在一起作为数据框。

datalist = list()

for (i in 5:15){

     dat = df %>%
           group_by(cluster) %>% 
           summarise((colnames(df)[i]) = (sum(colnames(df)[i])))
     dat$i = i
     datalist[[i]] = dat
}

combined = do.call(cbind, datalist)

行上带有簇标签的数据框,以及每列 attr1 ~ N 的总和

【问题讨论】:

    标签: r dplyr tidyverse


    【解决方案1】:

    您可能正在寻找 dplyr 中的 summarise_all 函数,该函数使用某个给定函数汇总数据框中的所有列 -

    df %>% 
      group_by(cluster) %>% 
      summarise_all(~sum(., na.rm = T))
    

    要仅汇总列的子集,请查看 ?summarise_at()

    【讨论】:

    • 哦,谢谢,我怎样才能只输入列的子集?
    • @Si_CPyR 你可以使用summarise_at。在您的问题中添加一些虚拟数据,以便演示解决方案。
    猜你喜欢
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2015-05-29
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多