如何在R中按年份计算相关系数并将结果存入数据框
问题分析与解决方案
你的代码问题出在两个核心点:
- 仅用
group_by()标记了分组,但没有对每个分组执行统计计算,所以赋值后的变量本质还是分组后的原数据集,没有生成汇总结果 - 单独调用的
cor()是直接对整个数据集计算相关系数,完全没用到分组逻辑
修正后的代码(按分组计算相关系数与决定系数)
# 先加载dplyr包(未加载的话执行这行) library(dplyr) # 按Year.x和YTD_Range.x分组,计算相关系数与决定系数并生成数据框 xmasCount_Amt_Coef <- xmasCount_Amt_df_ByCheckDate %>% group_by(Year.x, YTD_Range.x) %>% summarize( correlation = cor(n, Amount, use = "complete.obs"), # 处理缺失值,可按需调整use参数 r_squared = correlation^2, # 决定系数为相关系数的平方 .groups = "drop" # 取消分组状态,得到普通数据框 ) # 查看结果 print(xmasCount_Amt_Coef)
关键说明
summarize()是dplyr分组汇总的核心函数,会根据group_by()指定的分组,对每组单独计算统计量并生成新数据框cor()的use参数用于处理缺失值:"complete.obs"表示仅使用无缺失值的行计算,可根据数据情况替换为"pairwise.complete.obs"等.groups = "drop"能让结果回到普通数据框结构,避免后续操作受分组状态影响
内容的提问来源于stack exchange,提问作者Bryan Schmidt
相关产品推荐
相关产品推荐

