尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
R 语言实战:从数据处理到可视化的完整实例
1. 引言R 语言是统计计算和数据分析领域最流行的开源工具之一凭借丰富的包生态、强大的绘图能力和活跃的社区支持被广泛应用于学术研究、商业分析和数据科学实践。本文通过一系列可运行的代码实例带你从基础数据结构出发逐步掌握数据清洗、统计分析、可视化以及建模的完整流程。2. 环境准备与基础数据结构在开始之前请确保已安装 R 和 RStudio。本文所有代码均在 R 4.2 及以上版本中测试通过。首先我们快速回顾 R 中最常用的几种数据结构。2.1 向量与因子# 创建数值向量 scores - c(85, 92, 78, 96, 88) print(scores) 创建字符向量 names - c(Alice, Bob, Carol, David, Eve) print(names) 创建因子分类变量 gender - factor(c(M, F, F, M, F)) print(gender) print(levels(gender))2.2 数据框的创建与查看# 创建数据框 students - data.frame( name c(Alice, Bob, Carol, David, Eve), score c(85, 92, 78, 96, 88), gender c(F, M, F, M, F), stringsAsFactors FALSE ) 查看数据结构 str(students) head(students) 访问列 students$score students[[score]]3. 数据导入与清洗真实世界的数据往往杂乱无章清洗是数据分析中最耗时也最关键的一步。下面演示如何使用dplyr和tidyr完成常见的数据清洗任务。3.1 读取 CSV 文件# 安装并加载包 install.packages(dplyr) install.packages(tidyr) library(dplyr) library(tidyr) 读取 CSV 文件请将路径替换为实际文件路径 df - read.csv(data.csv, stringsAsFactors FALSE) 为演示我们直接创建一份模拟数据 df - data.frame( id 1:6, name c(Alice, Bob, Carol, David, Eve, Frank), age c(23, NA, 25, 22, NA, 24), score c(85, 92, NA, 96, 88, 79), stringsAsFactors FALSE ) print(df)3.2 处理缺失值# 查看缺失值分布 colSums(is.na(df)) 删除包含缺失值的行 df_clean - na.omit(df) 或用均值填充数值列 df_filled - df %% mutate( age ifelse(is.na(age), mean(age, na.rm TRUE), age), score ifelse(is.na(score), mean(score, na.rm TRUE), score) ) print(df_filled)3.3 筛选、排序与汇总# 筛选成绩大于 85 的学生 high_scores - df %% filter(score 85) print(high_scores) 按成绩降序排列 sorted - df %% arrange(desc(score)) print(sorted) 分组汇总按性别计算平均分 summary_by_gender - df %% group_by(gender) %% summarise( avg_score mean(score, na.rm TRUE), count n() ) print(summary_by_gender)4. 数据可视化R 的ggplot2包是数据可视化的利器其图层化语法让复杂图表变得简洁优雅。下面演示几种最常见的图表类型。4.1 安装并加载 ggplot2install.packages(ggplot2) library(ggplot2) 使用内置数据集 data(mtcars) head(mtcars)4.2 散点图与回归线# 散点图查看油耗与马力的关系 p1 - ggplot(mtcars, aes(x hp, y mpg)) geom_point(color steelblue, size 3) geom_smooth(method lm, se FALSE, color red) labs( title 马力与油耗的关系, x 马力 (hp), y 每加仑英里数 (mpg) ) theme_minimal() print(p1)4.3 柱状图与箱线图# 柱状图各气缸数的车辆数量 p2 - ggplot(mtcars, aes(x factor(cyl))) geom_bar(fill darkgreen, alpha 0.7) labs( title 气缸数分布, x 气缸数, y 车辆数量 ) theme_minimal() print(p2) 箱线图不同气缸数的油耗分布 p3 - ggplot(mtcars, aes(x factor(cyl), y mpg, fill factor(cyl))) geom_boxplot() labs( title 不同气缸数的油耗对比, x 气缸数, y 每加仑英里数 (mpg) ) theme_minimal() theme(legend.position none) print(p3)4.4 保存图片# 保存为 PNG 文件 ggsave(scatter_plot.png, plot p1, width 8, height 6, dpi 300)5. 统计分析实例R 内置了丰富的统计函数可以快速完成假设检验、相关分析和回归建模。5.1 描述性统计# 计算描述性统计量 summary(mtcars$mpg) 自定义统计函数 stats - data.frame( mean mean(mtcars$mpg), sd sd(mtcars$mpg), median median(mtcars$mpg), min min(mtcars$mpg), max max(mtcars$mpg) ) print(stats)5.2 t 检验与相关性分析# 独立样本 t 检验自动挡与手动挡的油耗差异 t_test_result - t.test(mpg ~ am, data mtcars) print(t_test_result) 相关性分析 cor_matrix - cor(mtcars[, c(mpg, hp, wt, disp)]) print(cor_matrix) 相关性检验 cor_test - cor.test(mtcars$mpg, mtcars$wt) print(cor_test)5.3 线性回归建模# 建立线性回归模型 model - lm(mpg ~ hp wt cyl, data mtcars) summary(model) 模型诊断图 par(mfrow c(2, 2)) plot(model)6. 完整实战案例学生成绩分析下面把前面学到的知识串起来完成一个完整的分析流程从模拟数据生成、清洗、可视化到回归建模。# 完整流程 library(dplyr) library(ggplot2) 1. 生成模拟数据 set.seed(42) n - 200 study_hours - rnorm(n, mean 5, sd 2) sleep_hours - rnorm(n, mean 7, sd 1.5) score - 50 8 * study_hours 3 * sleep_hours rnorm(n, 0, 5) students_data - data.frame( study_hours study_hours, sleep_hours sleep_hours, score score ) 2. 数据概览 summary(students_data) 3. 可视化学习时间与成绩的关系 p - ggplot(students_data, aes(x study_hours, y score)) geom_point(alpha 0.5, color purple) geom_smooth(method lm, color darkblue) labs( title 学习时间与成绩的关系, x 每日学习时间小时, y 考试成绩 ) theme_minimal() print(p) 4. 多元线性回归 model - lm(score ~ study_hours sleep_hours, data students_data) summary(model) 5. 预测新数据 new_student - data.frame(study_hours 6, sleep_hours 8) predicted_score - predict(model, newdata new_student) print(paste(预测成绩, round(predicted_score, 2)))7. 总结本文通过大量可运行的代码实例系统展示了 R 语言在数据处理、可视化和统计分析方面的核心能力。从基础数据结构到dplyr数据清洗从ggplot2可视化到线性回归建模这些技能构成了 R 数据分析的基本框架。建议读者动手运行每一段代码并尝试修改参数观察结果变化这是掌握 R 语言最有效的方式。
RELATED

相关推荐

ESP32 CSI 快速上手指南:用两块开发板跑通 Wi-Fi 感知链路

ESP32 CSI 快速上手指南:用两块开发板跑通 Wi-Fi 感知链路

ESP32 CSI 快速上手指南:用两块开发板跑通 Wi-Fi 感知链路 【免费下载链接】esp-csi Applications based on Wi-Fi CSI (Channel state information), such as indoor positioning, human detection 项目地址: https://gitcode.com/GitHub_Trending/es/esp-csi …

📅 2026/10/23 6:26:50
python把pdf中所有页面导出为图片

python把pdf中所有页面导出为图片

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/23 6:26:50
Rime 输入法怎么挑:5 分钟看懂 awesome-rime 输入方案与配置列表

Rime 输入法怎么挑:5 分钟看懂 awesome-rime 输入方案与配置列表

Rime 输入法怎么挑:5 分钟看懂 awesome-rime 输入方案与配置列表 【免费下载链接】awesome-rime A curated list of Rime IME schemata and configs | Rime 輸入方案和配置列表 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-rime 拼音打字总是…

📅 2026/10/23 6:26:50
MORE NEWS

更多资讯

📰

嵌入式驱动开发实战:从寄存器操作到DMA调试的完整经验总结

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

时序路径分析核心框架:从STA原理到违例修复实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

智能制造生产优化的5大落地难点:数据断层、多目标冲突与人机协同

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

采样间隔1秒一天86KB?GOT2000数据记录容量配置全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Loop 开源窗口管理工具:鼠标手势与快捷键提升 macOS 多窗口效率

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

如何降低AI检测率?让AI写作更有“人味儿”的实用技巧

“怎么降低AI检测率”这个话题,最近几个月在内容创作者圈子里几乎成了默认的刚需。无论是写自媒体文章、做短视频文案,还是提交一份项目总结报告,很多人发现:自己明明花了心思写东西,怎么一放进AI检测软件里就显示“疑…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬