【发布时间】:2021-03-02 04:17:35
【问题描述】:
您好,我有一个数据框,它是聚类的结果。示例如下:
ave_remark_best ave_price_per_sqft ave_age ave_DOM ave_activity_rate cluster
1006332 1.00000000 1419.6900 12.0000000 7.000000 1.0000000 3
1010660 1.00000000 912.1800 7.0000000 10.000000 1.0000000 3
1012960 0.00000000 600.7400 26.3000000 36.100000 1.6666667 2
1013515 0.25000000 673.8725 9.7500000 10.500000 0.6666667 4
1014490 0.00000000 439.4600 31.0000000 104.000000 1.0000000 2
1018326 0.00000000 922.5500 12.0000000 10.000000 1.0000000 4
1018446 0.25000000 717.8285 16.0375000 30.387500 10.0000000 1
为了检查结果集群,我希望有一个函数来为每个集群创建所有这些特征的汇总表,所以我运行了如下所示的代码:
cluster_summary <- agent_temp %>% group_by(cluster) %>% summarise(n=n(),
ave_activity_rate_c=mean(ave_activity_rate),
ave_DOM_c =mean(ave_DOM),
ave_age_c=mean(ave_age),
ave_remark_best_c=mean(ave_remark_best),
ave_price_per_sqft_c= mean(ave_price_per_sqft))
所以除了n,这个表中的每一个特征的名字都以variable+"_c"结尾。
现在我想通过使用一个函数来自动化这个过程;但是,我不确定如何使这个函数动态,以便它根据可用列自动生成列。所以基本上,如果主数据框现在如下所示:
ave_remark_best ave_price_per_sqft ave_age cluster
1006332 1.00000000 1419.6900 12.0000000 3
1010660 1.00000000 912.1800 7.0000000 3
1012960 0.00000000 600.7400 26.3000000 2
1013515 0.25000000 673.8725 9.7500000 4
1014490 0.00000000 439.4600 31.0000000 2
1018326 0.00000000 922.5500 12.0000000 4
1018446 0.25000000 717.8285 16.0375000 1
所以它只生成一个包含 n、ave_remark_best、ave_price_per_sqft、ave_age 的汇总表。 我该怎么做?
所以基本上,我的主要挑战是如何找到主数据框中存在哪些列,所以我通过这些列group_by 并创建摘要。
当然,函数应该是这样开始的:
cluster_summary_generator <- function (agent_sel, kout){
agent_temp<-agent_sel
agent_temp$cluster <- as.factor(kout$cluster)
cluster_summary <- agent_temp %>% group_by(cluster) %>% .......
}
但我不知道如何完成这个
【问题讨论】:
-
是否要将
mean函数应用于数据框中除cluster之外的所有可用列? -
这些函数应该能够在我在示例中展示的两个数据帧上工作(一个数据帧有两个额外的特性)。我刚刚展示了版本,所以我澄清了列名称可能会改变,所以该函数应该能够自动识别这一点并根据数据框中可用的列创建摘要
-
@RonakShah,是的,基本上,首先我想按集群分组,然后应用到平均值,所以我计算每个集群的平均值。对我来说主要挑战是该函数应该能够动态应用于数据框