在R中计算数据框bottom_temp列均值并填充至另一汇总数据框对应行
R实现方案
方法1:基础R实现(无需加载额外包)
# 生成1980到2015的年份序列 years <- 1980:2015 # 批量读取对应年份的数据框,计算bottom_temp列均值 avg_vals <- sapply(years, function(y) { df <- get(paste0(y, "_df")) # 存在缺失值可保留na.rm = TRUE,无缺失值可删除该参数 mean(df$bottom_temp, na.rm = TRUE) }) # 直接将均值赋值到month3_avg_box的对应列 month3_avg_box$avg_bottom_temp <- avg_vals
如果你的month3_avg_box的year列顺序和1980-2015的顺序不一致,可以用匹配赋值的方式:
month3_avg_box$avg_bottom_temp <- avg_vals[match(month3_avg_box$year, years)]
方法2:tidyverse风格实现
library(dplyr) library(purrr) years <- 1980:2015 # 批量计算均值生成汇总表 mean_result <- tibble(year = years) %>% mutate(avg_bottom_temp = map_dbl(year, ~{ df <- get(paste0(.x, "_df")) mean(df$bottom_temp, na.rm = TRUE) })) # 按年份匹配到原month3_avg_box中 month3_avg_box <- month3_avg_box %>% left_join(mean_result, by = "year", suffix = c("_old", "")) %>% select(year, avg_bottom_temp)
内容的提问来源于stack exchange,提问作者Jamie_B
相关产品推荐
相关产品推荐

