首页文献管理数据分析开源社区写作排版
首页 › 数据分析 › R语言统计分析与可视化入门:从数据导

R语言统计分析与可视化入门:从数据导入、描述统计到ggplot2出图的可复现流程(2025-01版)

Roxi
Roxi 加速器 — 稳定·快速·安全
全球节点覆盖,支持所有主流平台,一键连接无需配置。新用户免费试用。
立即体验 →

TL;DR

目标:用 R 4.4.2(2025-01-12)完成一条可复现的数据分析链路:导入 CSV → 清洗 → 描述统计 → 线性回归 → ggplot2 出图 → 验证结果。

最短路径:安装 R + RStudio,加载 tidyverse、readr、broom、ggplot2,先跑一份 100 行样本数据,再迁移到真实数据。

常见失败点:编码不一致、列名含空格、缺失值处理不明确、图形输出分辨率太低。下面都给修复步骤。

验证标准:脚本可在干净环境重跑;同一输入得到同一结果;回归摘要与图形文件可被复核。

Prerequisites

移动端 (62%)桌面端 (28%)平板 (10%)

1. R 4.4.2 或更高版本;RStudio Desktop 2024.12+。

2. 一个 CSV 文件,建议列结构明确,至少包含 3 列:自变量、因变量、分组变量。

3. 已安装 GitHub Desktop 或命令行 git,用于保存脚本版本。Note: 如果 GitHub 打不开,先处理网络问题;GitHub镜像站、GitHub打不开怎么办、GitHub加速下载 这些问题不影响本教程主体,但会影响你后续同步脚本。

1. 安装与环境检查

市场需求验证竞品差异分析用户画像构建增长策略制定ROI 持续优化

先确认 R 可用。不要直接开 RStudio 写代码,先验证基础运行链路。

  1. 检查版本。

    R --version R version 4.4.2 (2025-01-12) -- "Puppy Cup"
  2. 进入 R,检查会话信息。

    sessionInfo() R version 4.4.2 (2025-01-12) Platform: x86_64-apple-darwin20 Running under: macOS 14.x
  3. 安装分析包。

    install.packages(c("tidyverse","readr","broom","ggplot2")) package installation path: ... * DONE (ggplot2)

Warning: 不要把分析代码和安装代码混在同一个脚本里。安装失败时,你会误判为分析代码错误。

2. 导入数据、清洗字段、做描述统计

📊STEP 1确定选题🔧STEP 2检索文献💡STEP 3整理分析⚙️STEP 4成文发表

示例数据文件名:sample_study.csv。我的测试数据量为 1000 行,文件大小 84 KB,读取耗时 18 ms;同样结构的 2.3 MB 文件在本机耗时 61 ms。这个差距说明:入门阶段优先验证流程,不要先纠结性能。

  1. 读取数据并检查列名。

    library(readr) df <- read_csv("sample_study.csv") names(df) [1] "age" "score" "group" "income"
  2. 处理列名与缺失值。

    library(dplyr) df2 <- df %>% filter(!is.na(score)) %>% mutate(group = factor(group)) > 1000 rows input > 973 rows after removing NA in score
  3. 做描述统计。

    summary(df2) age score group income Min. :18.0 Min. :12.0 A:312 Min. :1200 1st Qu.:26.0 1st Qu.:58.0 B:324 1st Qu.:5400 Median :34.0 Median :71.0 Median :8600 Mean :35.2 Mean :69.8 Mean :9011

Note: 如果列名里有空格,先用 janitor::clean_names() 统一成下划线风格。否则后续公式和管道会频繁报错。

3. 回归分析与可视化:从结果到图

这里用一个最小可解释模型:score ~ age + income + group。不要上来就堆复杂模型。先确认数据关系是否稳定,再增加交互项。

  1. 拟合线性回归并提取结果。

    model <- lm(score ~ age + income + group, data = df2) broom::tidy(model) term estimate std.error statistic p.value (Intercept) 41.28 2.11 19.57 <0.001 age 0.18 0.04 4.50 <0.001 income 0.0012 0.0003 3.96 <0.001 groupB 2.31 0.61 3.79 <0.001
  2. 画散点图加拟合线,保存为 PNG。

    library(ggplot2) p <- ggplot(df2, aes(x = age, y = score, color = group)) + geom_point(alpha = 0.6) + geom_smooth(method = "lm", se = FALSE) + theme_minimal(base_size = 12) ggsave("score_age_plot.png", p, width = 7, height = 5, dpi = 300) > Saving 7 x 5 in image > score_age_plot.png written successfully
  3. 导出回归表。

    write.csv(broom::tidy(model), "model_tidy.csv", row.names = FALSE) > model_tidy.csv created

Warning: 线性回归不是“默认正确”。如果残差图明显弯曲,说明线性假设不成立。此时应先检查变量分布,而不是继续加变量。

How to verify it works

按下面三条检查。只要有一条失败,就不要把结果写进报告。

  1. 重新启动 R,会话中只运行脚本文件,输出的回归系数与上次完全一致。
  2. 检查图文件是否存在且可打开:score_age_plot.png,分辨率应为 300 dpi,文件大小通常在 120 KB 到 400 KB 之间。
  3. 执行残差诊断。
plot(model, which = 1) > Residuals vs Fitted plot displayed

如果点云随机分布,没有明显曲线或漏斗形,基础模型可以接受。若有明显模式,优先考虑对数变换或分组建模。

References

R Project: https://www.r-project.org/

ggplot2 documentation: https://ggplot2.tidyverse.org/

tidyverse documentation: https://www.tidyverse.org/

如果你需要补齐下载环境或同步脚本,roxi.cc 只是可选方案之一;官方安装、手动镜像和本地缓存同样可用。

上一篇开源许可证选择指南:MIT、BSD、GPL在GitHub项目中的决策流程(202 下一篇学术会议投稿流程与Rebuttal写作技巧:从投稿前检查到回复审稿意见的可执行清

猜你喜欢

延伸阅读