【问题标题】:Create table via R (clusters)通过 R(集群)创建表
【发布时间】:2020-07-09 11:13:29
【问题描述】:

我想通过 为我的问题制作一张表格。代码如下:

#database
df<-structure(list(Latitude = c(-23.8, -23.8, -23.9, -23.9, -23.9,  -23.9, -23.9, -23.9, -23.9, -23.9, -23.9, -23.9, -23.9, -23.9, 
+ -23.9, -23.9, -23.9, -23.9, -23.9), Longitude = c(-49.6, -49.6, -49.6, -49.6, -49.6, -49.6, -49.6, -49.6, -49.6, -49.6, -49.7, 
+ -49.7, -49.7, -49.7, -49.7, -49.6, -49.6, -49.6, -49.6), Waste = c(526, 350, 526, 469, 285, 175, 175, 350, 350, 175, 350, 175, 175, 364, 
+ 175, 175, 350, 45.5, 54.6)), class = "data.frame", row.names = c(NA, -19L))
   
Q1<-matrix(quantile(df$Waste, probs = 0.25))
df_Q1<-subset(df,Waste>Q1[1])
#cluster
d<-dist(df_Q1)
fit.average<-hclust(d,method="average")
clusters<-cutree(fit.average,k=4)
df_Q1$cluster<-clusters
     
dc<-aggregate(df_Q1[,"Waste"],list(cluster=clusters),sum)
colnames(dc)<-c("cluster","Sum_Waste")
dd<-aggregate(df_Q1[,"Waste"],list(cluster=clusters),mean)
colnames(dd)<-c("cluster","Mean_Waste")

谢谢!

新表

【问题讨论】:

    标签: r r datatable data-manipulation formattable


    【解决方案1】:

    Sum_WasteMean_Waste 可以与您的 df_Q1 数据框合并用于决赛桌。

    我不确定您正在考虑什么输出,但使用kableExtra 的一种方法将合并指定列中具有相同值的单元格。希望这会有所帮助。

    编辑:将properties 添加到表中。行现在按集群和属性排序。

    library(kableExtra)
    
    #database
    df<-structure(list(Latitude = c(-23.8, -23.8, -23.9, -23.9, -23.9,  -23.9, -23.9, -23.9, -23.9, -23.9, -23.9, -23.9, -23.9, -23.9, 
                                    + -23.9, -23.9, -23.9, -23.9, -23.9), Longitude = c(-49.6, -49.6, -49.6, -49.6, -49.6, -49.6, -49.6, -49.6, -49.6, -49.6, -49.7, 
                                                                                        + -49.7, -49.7, -49.7, -49.7, -49.6, -49.6, -49.6, -49.6), Waste = c(526, 350, 526, 469, 285, 175, 175, 350, 350, 175, 350, 175, 175, 364, 
                                                                                                                                                             + 175, 175, 350, 45.5, 54.6)), class = "data.frame", row.names = c(NA, -19L))
    
    Q1<-matrix(quantile(df$Waste, probs = 0.25))
    df_Q1<-subset(df,Waste>Q1[1])
    df_Q1
    
    #cluster
    d<-dist(df_Q1)
    fit.average<-hclust(d,method="average")
    clusters<-cutree(fit.average,k=4)
    df_Q1$cluster<-clusters
    df_Q1$properties<-names(clusters)
    
    #calculate sum waste
    dc<-aggregate(df_Q1[,"Waste"],list(cluster=clusters),sum)
    colnames(dc)<-c("cluster","Sum_Waste")
    head(dc)
    
    #calculate mean waste
    dd<-aggregate(df_Q1[,"Waste"],list(cluster=clusters),mean)
    colnames(dd)<-c("cluster","Mean_Waste")
    head(dd)
    
    #merge everything
    df_table <- Reduce(merge, list(df_Q1, dc, dd))
    
    #make table
    kable(df_table[order(df_table$cluster, as.numeric(df_table$properties)),c(5,2,3,4,1,6,7)], align = "c", row.names = FALSE) %>%
      kable_styling(full_width = FALSE) %>%
      column_spec(1, bold = TRUE) %>%
      collapse_rows(columns = 5:7, valign = "middle")
    

    编辑(20 年 4 月 18 日)

    要将properties 聚合在一行中,用逗号分隔,请尝试:

    #sort properties
    df_table <- df_table[order(df_table$cluster, as.numeric(df_table$properties)),]
    
    #second table aggregated properties
    df_table2 <- aggregate(. ~ cluster + Sum_Waste + Mean_Waste, df_table[,c(1,5,6,7)], toString)
    
    #make table with df_table2
    kable(df_table2[order(df_table2$cluster), c(4,1,2,3)], align = "c", row.names = FALSE) %>%
      kable_styling(full_width = FALSE)
    

    【讨论】:

    • Ben,你知道如何在表格的一行中添加各个集群的属性吗?谢谢
    • 对不起,我表达得很糟糕。我插入了该图以显示我希望如何将属性保持在一起。我想删除纬度,经度和浪费,并保持如上所示。有可能吗??谢谢本
    • 本,我在做更大的基础,我设法做到了,但数字不正常。我在上面留下了另一个图只是为了检查。看集群 2,它是 ..... 14,15,55,54,19 .... 我如何以正确的顺序保留它?
    • 成功了,非常感谢!再次感谢本。 Ben,问一个问题,你知道怎么和 Shiny 合作吗?
    • Ben,如果您可以查看,我将不胜感激 (stackoverflow.com/questions/61298886/…)。再次感谢。
    猜你喜欢
    • 2017-03-02
    • 2017-12-09
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多