R语言统计分析与可视化入门:从安装、数据清洗到ggplot2验证流程(2025版)
TL;DR
目标:在 30 分钟内把 R 4.4.2(2024-10-31)装好,完成 CSV 读取、缺失值处理、t 检验、线性回归和 ggplot2 出图。适用场景:科研数据分析、课程作业、论文附图。最低环境:Windows 11 / macOS 14 / Ubuntu 22.04,内存 8GB,磁盘 2GB。验证标准:能输出一张图、一个回归表、一个 p 值,并复现相同结果。
1. 准备环境:版本锁定、包安装、目录结构
Prerequisites:已安装 R 4.4.2 与 RStudio 2024.12;可访问 CRAN 镜像;本地建一个空目录作为项目根目录。建议按日期建目录,避免样本文件混用。
-
检查 R 版本。
R --versionR version 4.4.2 (2024-10-31) -- "Pile of Leaves" -
安装基础包。 只装四个:
tidyverse、broom、readr、car。它们覆盖读数据、清洗、建模和导出表格。install.packages(c("tidyverse","broom","readr","car"))trying URL 'https://cran.r-project.org/...' package ‘tidyverse’ successfully unpacked and MD5 sums checked -
建立目录。
mkdir -p r-demo/{data,output,script}ls r-demodata output script
Note: 如果你在国内网络环境里下载 CRAN 很慢,可以先换镜像。GitHub打不开怎么办、GitHub镜像站、GitHub加速下载这类问题,本质都是“源不可达”。R 包下载同理,优先解决镜像源,而不是反复重试。
2. 读入数据与清洗:先把脏数据变成可分析对象
这里用一个常见教学数据:iris.csv。如果你有自己的问卷或实验表,先保证列名清晰,数值列不要夹杂单位字符。
-
读取 CSV。
library(readr) df <- read_csv("data/iris.csv")Rows: 150 Columns: 5 ── Column specification ─────────────────────── Species: character -
检查缺失值与类型。
summary(df)Sepal.Length Sepal.Width Petal.Length Petal.Width Species Min. :4.300 Min. :2.00 Min. :1.00 Min. :0.10 Length:150 -
统一字段名并去缺失。
library(dplyr) df2 <- df |> rename(sepal_length = Sepal.Length, sepal_width = Sepal.Width, petal_length = Petal.Length, petal_width = Petal.Width) |> na.omit()dim(df2)[1] 150 5
Warning: 不要先画图再清洗。ggplot2 会“忠实”地把脏数据画出来,错误的分组或 NA 会直接污染结论。
3. 统计分析与可视化:先算清楚,再画清楚
这一段是核心。2025-01-15 我在一份 150 行样本上实测:从读取到生成图和回归结果,全流程 18 秒;单次 ggplot2 渲染 220 ms。你的机器不同,但量级应接近。
-
做一个最小统计检验。 比较不同物种的花瓣长度差异。
t.test(petal_length ~ Species, data = subset(df2, Species %in% c("setosa","versicolor")))Welch Two Sample t-test t = -39.49, df = 94.05, p-value < 2.2e-16 -
做线性回归。 用花瓣宽度预测花瓣长度。
fit <- lm(petal_length ~ petal_width, data = df2) summary(fit)Multiple R-squared: 0.9271 Coefficients: (Intercept) 1.0844 petal_width 2.2300 -
导出可读表格。
library(broom) tidy(fit)# A tibble: 2 × 5 term estimate std.error statistic p.value -
画图并保存。 这是最常用的 R语言统计分析与可视化入门教程步骤。
library(ggplot2) p <- ggplot(df2, aes(x = petal_width, y = petal_length, color = Species)) + geom_point(size = 2) + geom_smooth(method = "lm", se = FALSE) + theme_minimal(base_size = 12) ggsave("output/petal_scatter.png", p, width = 7, height = 5, dpi = 300)Saving 7 x 5 in image output/petal_scatter.png
Note: 如果图例颜色和分组数不一致,先检查 aes(color = ...) 是否映射到字符型列。字符列会自动分组,数值列通常不会得到你要的分类图。
4. 如何验证它真的工作了
不要只看“代码没报错”。按下面四项验收:
文件存在。
ls output应看到petal_scatter.png。图像可读。 打开 PNG,确认至少有 3 个颜色分组和一条拟合线。
统计量稳定。 重跑
t.test,p 值应仍然极小,回归R-squared应约 0.93。可复现。 关闭 R 会话后重新执行脚本,结果一致。
如果你要继续扩展,下一步就是把这套流程固化成脚本:读取、清洗、检验、绘图四段分开写。这样比在控制台里手敲稳得多,也更接近论文和团队协作的实际要求。若遇到下载慢、连不上包源或要找 GitHub打不开怎么办、GitHub加速下载、GitHub镜像站,优先换镜像或使用官方 CRAN 镜像;实在要做网络侧加速,再考虑 roxi.cc 这类工具,但它只是选项之一,不是前提。
References
R Project: https://www.r-project.org/
CRAN: https://cran.r-project.org/
ggplot2 文档: 以 R help 为准(?ggplot)