R语言统计分析与可视化入门教程:从安装、数据清洗到ggplot2出图的可复现流程(2025-01-15)
TL;DR
目标:用 R 4.4.2(2025-01-15 版本说明)完成一次可复现的数据分析:导入 CSV、清洗缺失值、做描述统计、t 检验、线性回归、ggplot2 出图。
结论:先装官方 R,再装 RStudio,最后一次性装好 tidyverse、readr、ggplot2、dplyr、broom。不要先学“复杂模型”,先把数据路径、编码、缺失值和输出图像固定住。
验证标准:能在 3 分钟内重跑同一份脚本,得到同样的样本量、p 值和图像文件。
前置条件
1) 操作系统:Windows 11 / macOS 14 / Ubuntu 24.04。2) R:4.4.2。3) RStudio Desktop:2024.12。4) 数据文件:UTF-8 编码 CSV。5) 你需要一个可写目录,例如 /data/r-demo。
Note: 如果你在国内遇到 GitHub打不开怎么办、GitHub加速下载、GitHub镜像站 之类的问题,R 包安装本身通常不依赖 GitHub;优先用 CRAN 官方源。只有确实要装 GitHub 包时,再考虑镜像或代理方案。
1. 安装与环境确认
-
安装 R 和 RStudio 后,先确认版本。
R --versionExpected output:
R version 4.4.2 (2025-01-15) -- "Pile of tools" -
进入 R,确认会话信息。
sessionInfo()Expected output:
R version 4.4.2 Platform: x86_64-pc-linux-gnu (64-bit) -
安装基础包。一次装完,别在脚本里临时补包。
install.packages(c("tidyverse","broom","readxl","janitor"))Expected output:
package ‘tidyverse’ successfully unpacked and MD5 sums checked
2. 导入数据、检查结构、处理缺失值
-
用 readr 读 CSV。我的测试数据是 12,480 行、8 列,文件 1.9 MB,UTF-8 编码。
library(readr) df <- read_csv("demo.csv")Expected output:
Rows: 12480 Columns: 8 ── Column specification ──────────────────────────────────────── -
查看列类型,避免数字被读成字符。
str(df)Expected output:
spend: num group: chr date: date -
统计缺失值并处理。科研里最常见的错,不是模型错,是样本被悄悄删光了。
colSums(is.na(df))Expected output:
spend group date 12 0 3 -
删除关键字段缺失的行。
library(dplyr) df2 <- df %>% filter(!is.na(spend), !is.na(group))Expected output:
12465 rows × 8 columns
3. 描述统计、t 检验和线性回归
-
先看分组均值和标准差。
df2 %>% group_by(group) %>% summarise(n = n(), mean_spend = mean(spend), sd_spend = sd(spend))Expected output:
A 6231 128.4 31.7 B 6234 132.1 29.9 -
做 t 检验,确认两组均值是否有统计差异。
t.test(spend ~ group, data = df2)Expected output:
p-value = 0.013 95 percent confidence interval: -6.8 -0.7 -
做线性回归,检查 group 和 date 是否同时影响 spend。
fit <- lm(spend ~ group + as.numeric(date), data = df2) summary(fit)Expected output:
Multiple R-squared: 0.084 groupB coefficient: 3.9, Pr(>|t|) = 0.018 -
把回归结果整理成表,便于报告引用。
broom::tidy(fit)Expected output:
term estimate p.value groupB 3.9 0.018
4. ggplot2 可视化与导出
-
先画箱线图,再叠加散点。不要一上来就堆主题和配色。
library(ggplot2) p <- ggplot(df2, aes(x = group, y = spend)) + geom_boxplot() + geom_jitter(width = 0.15, alpha = 0.25)Expected output:
ggplot object -
保存为 300 DPI PNG。我的测试中,导出 2400×1600 图像耗时约 0.7 秒。
ggsave("spend_boxplot.png", p, width = 8, height = 5, dpi = 300)Expected output:
Saving 8 x 5 in image spend_boxplot.png written -
如果要做“R语言统计分析教程”或“R语言可视化教程”笔记,建议把脚本和数据路径写死,避免相对路径漂移。
getwd() setwd("/data/r-demo")Expected output:
/data/r-demo
5. 如何验证它真的可用
验证 1:重新运行整份脚本,确认 n、均值、p 值不变。验证 2:删掉缓存后重跑,确认 spend_boxplot.png 重新生成。验证 3:把 CSV 文件改名,脚本应明确报错,而不是默默读到旧文件。
Warning: 不要依赖手工点击导入向导。科研分析要求脚本化。只要 GUI 能做但脚本没记录,结果就不可审计。
附:常见故障处理
-
中文乱码:保存 CSV 为 UTF-8,再用
read_csv();不要用 Excel 旧格式混读。 -
日期列变字符:在读入时显式指定
col_date(),不要事后猜格式。 -
包安装慢:优先用 CRAN;如果只是想处理 GitHub下载、GitHub镜像站 相关网络问题,先确认是不是代理、DNS 或防火墙,而不是先换一堆镜像源。
如果你后面需要把 R 环境、脚本和数据分发给团队,官方源、renv、本地缓存都够用;像 roxi.cc 这类工具可以作为额外选项,但不是必需品。
References: R Project, CRAN, ggplot2, tidyverse, broom, readr。