R语言实现:将水质指标的均值与标准差列合并为mean(sd)格式
R代码:合并水质指标均值与标准差并导出文件
1. 模拟示例数据
先创建一个和你描述结构一致的示例数据框,方便测试代码:
# 加载必要包 library(tidyverse) # 构造示例数据 set.seed(123) # 设置随机种子保证结果可复现 water_data <- tibble( Site = rep(paste0("Site_", 1:6), each = 4), # 6个监测点,每个点对应4个季节 Season = rep(c("Spring", "Summer", "Autumn", "Winter"), times = 6), # 4个季节 Temp_1 = rnorm(24, mean = 20, sd = 3), # 温度均值列 Temp_2 = rnorm(24, mean = 1.5, sd = 0.5), # 温度标准差列 pH_1 = rnorm(24, mean = 7.5, sd = 0.3), # pH均值列 pH_2 = rnorm(24, mean = 0.2, sd = 0.05), # pH标准差列 DO_1 = rnorm(24, mean = 8, sd = 1), # 溶解氧均值列 DO_2 = rnorm(24, mean = 0.8, sd = 0.2) # 溶解氧标准差列 )
2. 合并均值与标准差列
手动指定指标合并(适合指标数量少的情况)
通过mutate创建合并后的新列,可选择删除原始的均值/标准差列:
# 合并指标列,保留2位小数 water_combined <- water_data %>% mutate( Temp = paste0(round(Temp_1, 2), "(", round(Temp_2, 2), ")"), pH = paste0(round(pH_1, 2), "(", round(pH_2, 2), ")"), DO = paste0(round(DO_1, 2), "(", round(DO_2, 2), ")") ) %>% select(-ends_with("_1"), -ends_with("_2")) # 删除原始均值、标准差列(不需要可移除该行)
批量自动合并(适合指标数量多的情况)
自动识别所有带_1(均值)、_2(标准差)后缀的列,批量完成合并:
# 获取所有指标名称(提取_1列的前缀) indices <- unique(str_subset(colnames(water_data), "_1$") %>% str_remove("_1$")) # 批量循环合并 water_combined_batch <- water_data for (idx in indices) { mean_col <- paste0(idx, "_1") sd_col <- paste0(idx, "_2") water_combined_batch <- water_combined_batch %>% mutate(!!idx := paste0(round(.data[[mean_col]], 2), "(", round(.data[[sd_col]], 2), ")")) %>% select(-all_of(c(mean_col, sd_col))) }
3. 导出处理后的数据
导出为CSV文件(通用格式)
write_csv(water_combined_batch, "combined_water_data.csv")
导出为Excel文件
先安装openxlsx包(仅首次需要),再执行导出:
# install.packages("openxlsx") library(openxlsx) write.xlsx(water_combined_batch, "combined_water_data.xlsx")
内容的提问来源于stack exchange,提问作者Melanie Baker
相关产品推荐
相关产品推荐

