如何按DataFrame中expl.val分组计算pred.val均值并生成新DataFrame
解决方案
使用dplyr包(推荐)
先按expl.val分组计算pred.val的均值,再补全1到14的所有取值:
library(dplyr) # 分组计算均值 mean_data <- cat1 %>% group_by(expl.val) %>% summarise(pred.val = mean(pred.val, na.rm = TRUE)) # 生成包含1-14的完整序列,左连接补全缺失项 final_df <- tibble(expl.val = 1:14) %>% left_join(mean_data, by = "expl.val") # 可选:将缺失的均值替换为0(或其他值) final_df <- final_df %>% mutate(pred.val = replace_na(pred.val, 0))
使用Base R
如果不想加载额外包,用基础R实现:
# 分组计算均值 mean_data <- aggregate(pred.val ~ expl.val, data = cat1, FUN = mean, na.rm = TRUE) # 生成完整序列并合并,保留所有1-14的取值 final_df <- merge(data.frame(expl.val = 1:14), mean_data, by = "expl.val", all.x = TRUE)
说明:
na.rm = TRUE用于忽略pred.val中的缺失值,避免计算结果为NA- 左连接/
all.x = TRUE确保1到14的每个expl.val都出现在最终DataFrame中,原始数据中没有的取值对应的均值会显示为NA,可按需替换为其他值
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

