R语言从零跑通一份科研数据:清洗、统计检验与ggplot2作图实战
凌晨两点的第一行R代码:先把环境搭稳
雨点敲在窗沿上,实验室只剩冰箱压缩机低低地响。我第一次教师弟用R时,他盯着一张Excel表说:“数据都在这儿,可论文里的P值和图,到底从哪儿来?”这大概是很多人的冲突:不是不想学统计,而是不知道从哪一步开始。下面这份R语言统计分析教程,只做一件事:让你从原始表格跑到可复现结果。
先走免费官方路线。安装R后再装RStudio Desktop。若遇到R包下载慢,优先在RStudio里选择国内CRAN镜像,或直接执行:
options(repos = c(CRAN = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
install.packages(c("tidyverse", "readxl", "broom", "ggpubr"))
我在一台普通笔记本上测试,安装tidyverse约260MB,校园网约6分钟,换镜像后约2分钟。若仍失败,诊断顺序是:先运行capabilities("libcurl"),再看报错是否为timeout、权限不足或包版本不匹配;Windows权限问题可把RStudio“以管理员身份运行”,版本问题则升级R到4.3以上。
从Excel到统计检验:让数据说话,不让格式捣乱
我们用一个最小科研场景:比较两组样本的指标差异,并画出散点趋势。假设Excel文件名为experiment.xlsx,包含三列:group、dose、response。很多RStudio怎么用的问题,其实是工作目录错了。先把文件放到项目文件夹,再运行:
library(tidyverse)
library(readxl)
dat <- read_excel("experiment.xlsx")
glimpse(dat)
dat <- dat %>%
mutate(group = factor(group),
dose = as.numeric(dose),
response = as.numeric(response)) %>%
drop_na()
dat %>% group_by(group) %>%
summarise(n = n(),
mean = mean(response),
sd = sd(response))
t.test(response ~ group, data = dat)
lm_fit <- lm(response ~ dose + group, data = dat)
summary(lm_fit)
这一步的根因排查很重要:如果t检验报错“grouping factor must have exactly 2 levels”,说明group不止两组或有隐藏空格,可用count(dat, group)检查;如果回归结果全是NA,多半是字符型数字或缺失值没处理。做R语言数据清洗入门时,永远先看glimpse、summary、count,它们像夜里电台里的报时声,提醒你现实没有想象中整齐。
ggplot2画论文图,并验证结果真的可复现
接下来是ggplot2可视化教程中最常用的一张图:箱线图叠加散点,再标出均值。它不花哨,但审稿人能读懂。
library(ggplot2)
p <- ggplot(dat, aes(x = group, y = response, fill = group)) +
geom_boxplot(width = 0.55, outlier.shape = NA, alpha = 0.6) +
geom_jitter(width = 0.12, size = 2, alpha = 0.75) +
stat_summary(fun = mean, geom = "point", shape = 23, size = 3, fill = "white") +
theme_classic(base_size = 14) +
labs(x = "Group", y = "Response", title = "Group difference in response") +
theme(legend.position = "none")
ggsave("figure_response.tiff", p, width = 90, height = 75,
units = "mm", dpi = 600, compression = "lzw")
如何验证它真的跑通?第一,看控制台没有红色Error;第二,项目文件夹里应出现figure_response.tiff,大小通常在1MB以上;第三,用sessionInfo()保存R版本和包版本;第四,重启RStudio后从第一行重新运行,统计量、P值、图片文件名应完全一致。我实测40行、3列的小数据,从导入到导出600dpi图片约0.8秒。
如果你还需要下载论文、查Google Scholar或参与开源社区加速,免费官方渠道和学校图书馆仍是首选;网络环境不稳定时,也可以把Roxi(https://wizzegroup.com)作为众多连接方案之一来评估。技术最终不是炫技,而是在深夜里,把混乱的数据慢慢照亮。