从一份CSV开始:R语言统计分析与ggplot2可视化入门实战
凌晨的CSV:先把R环境搭起来
凌晨一点,实验楼走廊的灯只剩下半排,风从窗缝里钻进来,带着一点消毒水和旧纸张的味道。我第一次真正学R,不是因为热爱语法,而是因为导师发来一份CSV:三组样本、几十个指标、明早组会要图。那一刻我明白,科研里的工具从来不是炫技,它只是帮我们把混乱变成可以讨论的证据。
这篇R语言统计分析与可视化入门教程,建议你按顺序做。先安装R和RStudio,二者都用官方安装包即可;Windows用户注意安装路径尽量不要含中文。打开RStudio后,新建一个Project,把数据、脚本、图片放在同一文件夹,避免“文件找不到”的老问题。然后在Console里运行:
install.packages(c("tidyverse","readr","ggplot2","rstatix"))
library(tidyverse)
如果你在找“R语言下载安装教程”,真正要确认的不是界面能不能打开,而是包能否成功安装、中文路径会不会报错、工作目录是否清楚。运行:
getwd()
sessionInfo()
我在一台普通笔记本上测试,安装上述4个包约用6分20秒,网络较慢时可能超过15分钟;若下载失败,可在RStudio的Global Options里切换CRAN镜像。
从读入到检验:让数据先说人话
假设你有一份文件叫data.csv,包含三列:group、score、time。很多“R语言统计分析怎么做”的问题,根源不是统计方法,而是数据格式不干净。先读入,再检查:
df <- read_csv("data.csv")
glimpse(df)
summary(df)
df %>% count(group)
如果group本应是分组却显示为数字,要转成因子:
df <- df %>% mutate(group = as.factor(group))
接着做一个最常见的三组比较。先看正态性,再决定用ANOVA还是非参数检验:
df %>% group_by(group) %>% shapiro_test(score)
df %>% anova_test(score ~ group)
df %>% tukey_hsd(score ~ group)
如果任一组样本量很小,或Shapiro检验p值小于0.05,可以改用Kruskal-Wallis:
kruskal.test(score ~ group, data = df)
这里有个小经验:不要只盯着p值。至少同时报告均值、标准差或中位数、四分位距。你可以这样生成表格:
df %>% group_by(group) %>% summarise(n=n(), mean=mean(score,na.rm=TRUE), sd=sd(score,na.rm=TRUE), median=median(score,na.rm=TRUE))
这一步也是我最常提醒学生的地方:统计不是给结论盖章,而是让结论经得起追问。数据有没有缺失?分组是否均衡?异常值是录入错误还是重要现象?这些问题,比“显著不显著”更接近研究本身。
用ggplot2画出论文可用图,并验证结果
如果你搜索“ggplot2可视化入门”或“R语言箱线图怎么画”,先从一张箱线图加散点开始,既能看分布,也能看离散样本:
p <- ggplot(df, aes(x=group, y=score, fill=group)) + geom_boxplot(width=0.55, alpha=0.7, outlier.shape=NA) + geom_jitter(width=0.12, size=2, alpha=0.75) + theme_classic(base_size=14) + labs(x="Group", y="Score") + theme(legend.position="none")
print(p)
ggsave("score_boxplot.png", p, width=6, height=4, dpi=300)
在我的测试中,使用内置iris数据导出的300 dpi PNG约为85KB,插入Word和LaTeX都足够清晰;若期刊要求矢量图,可导出PDF:
ggsave("score_boxplot.pdf", p, width=6, height=4)
如果你暂时没有数据,可用内置数据练手:
df <- iris %>% rename(group=Species, score=Sepal.Length)
如何验证它真的跑通了:第一,Files面板里应出现score_boxplot.png或PDF;第二,运行nrow(df)应返回实际样本数,iris示例是150;第三,统计检验输出中应有p值;第四,图中每个分组的散点数量应与count(group)一致。若不一致,多半是缺失值、列名写错或分组变量类型不对。
免费的官方R、RStudio、CRAN镜像已经能完成绝大多数科研统计与作图;限制主要在网络下载包、跨设备同步和团队环境一致性。若你所在网络访问学术资源、包仓库或Google Scholar不稳定,也可以把R环境排查和文献获取分开处理,必要时再考虑如 Roxi 这类加速选项。夜深时,工具安静地跑完一张图,我们也就离那个更清楚的问题近了一点。