如何在R中计算多列SE、合并列均值并绘制折线图
原始数据集
Con A B C D 20.0000 0.7150 0.6014 0.5665 0.5954 10.0000 0.5245 0.5139 0.5119 0.7416 5.0000 0.4305 0.3585 0.3347 0.6231 2.5000 0.2941 0.2592 0.2189 0.4809 1.2500 0.2257 0.1990 0.1809 0.3375 0.6250 0.1638 0.1439 0.1460 0.2189 0.3125 0.1673 0.1372 0.1466 0.2011 0.0000 0.1565 0.1449 0.1634 0.1556
需求
将A列与B列、C列与D列分别计算均值生成两个新列,同时计算对应的标准误(SE),并以Con(浓度)为横轴绘制折线图。
具体实现步骤(R语言)
1. 安装并加载必要的包
我们需要用dplyr处理数据,ggplot2绘图,首次运行先安装包,之后直接加载:
# 首次运行执行安装 install.packages(c("dplyr", "ggplot2", "tidyr")) # 加载包 library(dplyr) library(ggplot2) library(tidyr)
2. 导入数据集
直接把数据复制到R中创建数据框,适合新手快速上手:
df <- data.frame( Con = c(20.0000, 10.0000, 5.0000, 2.5000, 1.2500, 0.6250, 0.3125, 0.0000), A = c(0.7150, 0.5245, 0.4305, 0.2941, 0.2257, 0.1638, 0.1673, 0.1565), B = c(0.6014, 0.5139, 0.3585, 0.2592, 0.1990, 0.1439, 0.1372, 0.1449), C = c(0.5665, 0.5119, 0.3347, 0.2189, 0.1809, 0.1460, 0.1466, 0.1634), D = c(0.5954, 0.7416, 0.6231, 0.4809, 0.3375, 0.2189, 0.2011, 0.1556) )
3. 计算均值与标准误
用dplyr按行计算每组的均值和标准误(标准误公式:标准差 / sqrt(重复次数),这里每组2个重复):
df_processed <- df %>% rowwise() %>% mutate( # A+B组的均值和标准误 AB_mean = mean(c(A, B)), AB_SE = sd(c(A, B)) / sqrt(2), # C+D组的均值和标准误 CD_mean = mean(c(C, D)), CD_SE = sd(c(C, D)) / sqrt(2) ) %>% ungroup() # 取消按行分组,恢复常规数据结构
查看处理后的数据:
print(df_processed)
4. 绘制折线图
先把数据转为长格式(适配ggplot2的绘图逻辑),再绘制带误差棒的折线图:
# 转换为长格式 df_long <- df_processed %>% select(Con, AB_mean, AB_SE, CD_mean, CD_SE) %>% pivot_longer( cols = -Con, names_to = c("Group", ".value"), names_pattern = "(AB|CD)_(mean|SE)" ) # 绘制折线图 ggplot(df_long, aes(x = Con, y = mean, color = Group)) + geom_line(size = 1) + # 折线样式 geom_point(size = 3) + # 数据点样式 geom_errorbar(aes(ymin = mean - SE, ymax = mean + SE), width = 0.5) + # 误差棒 labs( x = "浓度 (Con)", y = "均值", title = "浓度-均值关系折线图", color = "分组" ) + theme_minimal() # 简洁主题
内容的提问来源于stack exchange,提问作者Tanjim Ahmed
相关产品推荐
相关产品推荐

