当前位置: 首页 > article >正文

第十三章:R 读取 txt、csv 表格数据

数据分析的第一步永远是读取数据。真实数据通常存储在 CSV、TXT 等文件中本章将学习如何用 R 读取外部数据文件以及如何把分析结果导出保存。一、数据文件常见格式格式扩展名特点CSV.csv逗号分隔最通用的表格格式TXT.txt制表符或自定义分隔符Excel.xlsx需要额外包如 readxl本章重点CSV 和 TXT因为 R 内置函数就能处理无需安装任何包。二、准备工作设置工作目录R 需要知道去哪个文件夹找文件。1. 查看当前工作目录getwd()运行结果[1] d:/develop/code/R2. 设置工作目录setwd适合小型数据分析项目。大型项目推荐用 here 包# ❌ 坏写法换电脑就找不到setwd(d:/develop/code/R/data)# ✅ 好写法项目相对路径setwd(data)建议把数据文件放在工作目录下读取时直接写文件名即可不用写完整路径。三、读取 CSV 文件1. 先创建一个示例 CSV 文件运行以下代码自动生成一个练习用的 CSV 文件# 设置到你放数据文件的目录setwd(data)# 创建示例数据并保存为 CSVstudents-data.frame(namec(张三,李四,王五,赵六,孙七),genderc(男,女,男,男,女),mathc(92,88,76,65,95),chinesec(85,72,95,58,88),englishc(78,90,82,70,92),stringsAsFactorsFALSE)write.csv(students,students.csv,row.namesFALSE)print(已生成 students.csv)2. 用 read.csv() 读取# 设置到你放数据文件的目录setwd(data)# 读取 CSV 文件df-read.csv(students.csv,stringsAsFactorsFALSE)print(df)运行结果name gender math chinese english 1 张三 男 92 85 78 2 李四 女 88 72 90 3 王五 男 76 95 82 4 赵六 男 65 58 70 5 孙七 女 95 88 923. read.csv() 常用参数# 设置到你放数据文件的目录setwd(data)df-read.csv(students.csv,headerTRUE,# 第一行是否为列名默认 TRUEstringsAsFactorsFALSE,# 不自动将字符串转为因子encodingUTF-8,# 编码中文文件常用sep,# 分隔符CSV 默认逗号)4. 读取中文 CSV 的常见问题如果读出来是乱码尝试指定编码# 方法1指定 UTF-8 编码df-read.csv(students.csv,fileEncodingUTF-8,stringsAsFactorsFALSE)# 方法2如果是 Windows 下 GBK 编码df-read.csv(students.csv,fileEncodingGBK,stringsAsFactorsFALSE)四、读取 TXT 文件1. 创建示例 TXT 文件# 创建制表符分隔的 TXT 文件students-data.frame(namec(张三,李四,王五),mathc(92,88,76),chinesec(85,72,95),stringsAsFactorsFALSE)write.table(students,students.txt,sep\t,row.namesFALSE,quoteFALSE)print(已生成 students.txt)2. 用 read.table() 读取# 读取制表符分隔的 TXTdf-read.table(students.txt,headerTRUE,sep\t,stringsAsFactorsFALSE)print(df)运行结果name math chinese 1 张三 92 85 2 李四 88 72 3 王五 76 953. read.csv vs read.table函数默认分隔符适用场景read.csv()逗号,CSV 文件read.table()空格/制表符TXT 文件灵活指定分隔符实际上read.csv()是read.table()的简化版# 这两行等价read.csv(data.csv)read.table(data.csv,headerTRUE,sep,)4. 读取其他分隔符的文件# 分号分隔df-read.table(data.csv,headerTRUE,sep;,stringsAsFactorsFALSE)# 空格分隔df-read.table(data.txt,headerTRUE,sep ,stringsAsFactorsFALSE)# 竖线分隔df-read.table(data.txt,headerTRUE,sep|,stringsAsFactorsFALSE)五、读取后检查数据养成读取后立即检查的好习惯df-read.csv(students.csv,stringsAsFactorsFALSE)# 第一步看前几行head(df)# 第二步看结构str(df)# 第三步看维度dim(df)nrow(df)ncol(df)# 第四步看列名names(df)# 第五步快速统计summary(df)六、导出数据1. 导出为 CSVdf-data.frame(namec(张三,李四,王五),mathc(92,88,76),stringsAsFactorsFALSE)# 导出 CSV不保存行号write.csv(df,output.csv,row.namesFALSE)2. 导出为 TXT# 导出制表符分隔的 TXTwrite.table(df,output.txt,sep\t,row.namesFALSE,quoteFALSE)3. 导出参数说明write.csv(df,output.csv,row.namesFALSE,# 不保存行号通常不需要quoteFALSE,# 不给字符串加引号fileEncodingUTF-8# 指定编码)七、读写完整流程示例# # 完整流程读取 → 处理 → 导出# # 1. 创建原始数据并保存raw-data.frame(namec(张三,李四,王五,赵六,孙七),genderc(男,女,男,男,女),mathc(92,88,76,65,95),chinesec(85,72,95,58,88),englishc(78,90,82,70,92),stringsAsFactorsFALSE)write.csv(raw,scores_raw.csv,row.namesFALSE)# 2. 读取数据df-read.csv(scores_raw.csv,stringsAsFactorsFALSE)# 3. 数据处理计算总分、平均分、等级df$total-df$mathdf$chinesedf$english df$average-round(df$total/3,1)df$grade-ifelse(df$average90,优秀,ifelse(df$average80,良好,ifelse(df$average60,及格,不及格)))# 4. 导出处理后的数据write.csv(df,scores_result.csv,row.namesFALSE)print(处理完成已导出 scores_result.csv)八、综合实战练习可直接复制运行# # R 综合练习文件读写实战# 场景从原始数据到分析报告# # 1. 创建模拟数据模拟从外部获取的原始数据set.seed(42)n-15raw_data-data.frame(id1:n,namepaste0(学生,sprintf(%02d,1:n)),gendersample(c(男,女),n,replaceTRUE),classsample(c(A班,B班),n,replaceTRUE),mathround(runif(n,40,100)),chineseround(runif(n,40,100)),englishround(runif(n,40,100)),stringsAsFactorsFALSE)# 故意加入几个缺失值raw_data$math[3]-NAraw_data$english[7]-NA# 2. 保存原始数据write.csv(raw_data,exam_raw.csv,row.namesFALSE)print(原始数据已保存到 exam_raw.csv)# 3. 重新读取模拟从文件开始工作流df-read.csv(exam_raw.csv,stringsAsFactorsFALSE)print( 读取成功前5行预览 )print(head(df))print(paste(共,nrow(df),行,ncol(df),列))# 4. 数据检查print( 数据结构 )str(df)print( 缺失值检查 )for(colinnames(df)){na_count-sum(is.na(df[[col]]))if(na_count0){print(paste(col,列有,na_count,个缺失值))}}# 5. 处理缺失值用该科平均分填充df$math[is.na(df$math)]-round(mean(df$math,na.rmTRUE))df$english[is.na(df$english)]-round(mean(df$english,na.rmTRUE))# 6. 计算分析指标df$total-df$mathdf$chinesedf$english df$average-round(df$total/3,1)df$grade-ifelse(df$average90,优秀,ifelse(df$average80,良好,ifelse(df$average60,及格,不及格)))# 7. 排序df-df[order(df$total,decreasingTRUE),]df$rank-1:nrow(df)# 8. 导出最终结果write.csv(df,exam_result.csv,row.namesFALSE)print(分析结果已导出到 exam_result.csv)# 9. 输出摘要print( 最终结果 )print(df[,c(rank,name,class,math,chinese,english,total,average,grade)])# 10. 按班级汇总导出class_summary-aggregate(cbind(math,chinese,english,total)~class,datadf,FUNmean)class_summary$math-round(class_summary$math,1)class_summary$chinese-round(class_summary$chinese,1)class_summary$english-round(class_summary$english,1)class_summary$total-round(class_summary$total,1)write.csv(class_summary,exam_class_summary.csv,row.namesFALSE)print( 班级汇总 )print(class_summary)运行结果[1] 原始数据已保存到 exam_raw.csv [1] 读取成功前5行预览 id name gender class math chinese english 1 1 学生01 男 A班 84 97 81 2 2 学生02 男 B班 89 93 99 3 3 学生03 男 B班 NA 78 86 4 4 学生04 男 B班 81 98 74 5 5 学生05 女 B班 40 77 91 6 6 学生06 女 A班 90 60 51 [1] 共 15 行 7 列 [1] 数据结构 data.frame: 15 obs. of 7 variables: $ id : int 1 2 3 4 5 6 7 8 9 10 ... $ name : chr 学生01 学生02 学生03 学生04 ... $ gender : chr 男 男 男 男 ... $ class : chr A班 B班 B班 B班 ... $ math : int 84 89 NA 81 40 90 40 52 94 77 ... $ chinese: int 97 93 78 98 77 60 61 64 87 42 ... $ english: int 81 99 86 74 91 51 NA 90 82 54 ... [1] 缺失值检查 [1] math 列有 1 个缺失值 [1] english 列有 1 个缺失值 [1] 分析结果已导出到 exam_result.csv [1] 最终结果 rank name class math chinese english total average grade 2 1 学生02 B班 89 93 99 281 93.7 优秀 9 2 学生09 A班 94 87 82 263 87.7 良好 1 3 学生01 A班 84 97 81 262 87.3 良好 4 4 学生04 B班 81 98 74 253 84.3 良好 3 5 学生03 B班 70 78 86 234 78.0 及格 14 6 学生14 A班 98 56 69 223 74.3 及格 5 7 学生05 B班 40 77 91 208 69.3 及格 8 8 学生08 A班 52 64 90 206 68.7 及格 6 9 学生06 A班 90 60 51 201 67.0 及格 12 10 学生12 A班 66 81 48 195 65.0 及格 11 11 学生11 B班 63 85 43 191 63.7 及格 15 12 学生15 A班 66 71 52 189 63.0 及格 10 13 学生10 A班 77 42 54 173 57.7 不及格 7 14 学生07 A班 40 61 70 171 57.0 不及格 13 15 学生13 A班 42 50 53 145 48.3 不及格 [1] 班级汇总 class math chinese english total 1 A班 70.9 66.9 65.0 202.8 2 B班 68.6 86.2 78.6 233.4

相关文章:

第十三章:R 读取 txt、csv 表格数据

数据分析的第一步永远是读取数据。真实数据通常存储在 CSV、TXT 等文件中,本章将学习如何用 R 读取外部数据文件,以及如何把分析结果导出保存。 一、数据文件常见格式 格式扩展名特点CSV.csv逗号分隔,最通用的表格格式TXT.txt制表符或自定义…...

NotebookLM赋能图书馆学研究:3大颠覆性应用+5个未公开工作流

更多请点击: https://kaifayun.com 第一章:NotebookLM赋能图书馆学研究:范式跃迁与学科再定义 传统图书馆学长期依托文献分类、编目规则与用户行为统计等静态分析范式,而NotebookLM作为Google推出的基于引用感知(cita…...

终极解决方案:NoSleep防休眠工具让你的Windows永不休眠

终极解决方案:NoSleep防休眠工具让你的Windows永不休眠 【免费下载链接】NoSleep Lightweight Windows utility to prevent screen locking 项目地址: https://gitcode.com/gh_mirrors/nos/NoSleep 你是否曾经遇到过这样的困扰?深夜下载大型文件到…...

SQL注入技术详解:从联合查询到盲注实战

前言: 继续开始我们的SQL注入吧!本文详细讲解SQL注入的各类技术,包括联合查询、报错注入、布尔盲注、时间盲注、UA注入、Referer注入等,涵盖漏洞判断、利用方法和实战步骤。内容基于MySQL 5.0以上环境,围绕information…...

深入解析PCI中断路由:从硬件引脚到操作系统中断处理的完整链路

1. 项目概述与核心问题在计算机硬件系统里,中断机制是设备与处理器高效通信的生命线。它允许设备在需要处理器服务时,主动“打断”处理器当前的工作流,而不是让处理器不断地去“询问”设备的状态。对于PCI(Peripheral Component I…...

中兴光猫终极管理工具:一键开启工厂模式与永久Telnet完全指南

中兴光猫终极管理工具:一键开启工厂模式与永久Telnet完全指南 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu zteOnu是一款专为中兴光猫设备设计的开源管理工具&#xff0c…...

Keil µVision多目标配置与条件编译实战指南

1. 项目概述 在嵌入式开发中,我们经常会遇到一个实际需求:如何基于同一套源代码生成多个不同的程序版本?这个问题看似简单,但在Keil Vision这样的集成开发环境中,却涉及到项目管理、编译配置和条件编译等多个技术要点。…...

【VScode】STM32CubeMX+VScode开发编译下载STM32程序(基于Cmake工程)

【VScode】STM32CubeMXVScode开发STM32程序(基于Cmake工程) 文章目录准备工作安装上述软件(略)为VScode配置隔离开发环境-cubeMX为新环境安装插件1. 安装STM32CubelIDE for Visual Studiio Code插件2. 安装Cortex-Debug插件3. 安装…...

量子错误校正与离子阱系统的混合编码优化

1. 量子错误校正与离子阱系统的现状与挑战量子计算领域正经历着从NISQ(含噪声中等规模量子)时代向容错量子计算(FTQC)过渡的关键阶段。作为这一过渡的核心技术,量子错误校正(QEC)通过将逻辑量子…...

完全掌握JetBrains IDE试用期重置:从原理到实战的终极解决方案

完全掌握JetBrains IDE试用期重置:从原理到实战的终极解决方案 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为JetBrains系列开发工具的试用期限制而困扰吗?IDE Eval Resetter为您提…...

Windows Cleaner终极指南:5大核心技术解析与实战优化方案

Windows Cleaner终极指南:5大核心技术解析与实战优化方案 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款专为Windows系统设计的…...

3步高效解决Krita AI Diffusion插件IP-Adapter缺失问题

3步高效解决Krita AI Diffusion插件IP-Adapter缺失问题 【免费下载链接】krita-ai-diffusion Streamlined interface for generating images with AI in Krita. Inpaint and outpaint with optional text prompt, no tweaking required. 项目地址: https://gitcode.com/gh_mi…...

影刀RPA店群自动化实战:Python协同多实例隔离与高并发任务调度系统架构设计

大家好,我是林焱。 过去这几年,我一直扎根在电商自动化研发与系统交付的最前线。 看着许多电商团队从单机单店的“草莽时代”,一步步走向拼多多、TEMU、TikTok Shop 的矩阵化运营。 在这个过程中,大家在享受效率飞升红利的同时…...

【NotebookLM高阶假设工程】:为什么87%的研究者卡在第2步?3类典型失效模式+实时调试SOP

更多请点击: https://intelliparadigm.com 第一章:NotebookLM假设构建辅助 NotebookLM 是 Google 推出的基于用户上传文档进行可信问答与推理的 AI 工具,其核心能力之一是支持“假设构建”(Hypothesis Generation)——…...

GitHub中文界面革命:3步破解英文障碍,开启高效开源协作新纪元

GitHub中文界面革命:3步破解英文障碍,开启高效开源协作新纪元 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese …...

3DMAX建模救星实测:SmoothBoolean插件处理复杂布尔运算,到底有多稳多快?

3DMAX建模革命:SmoothBoolean插件深度测评与实战指南 在数字建模的世界里,布尔运算一直是把双刃剑——它既能快速实现复杂形状的切割与组合,又常常成为模型崩溃的导火索。对于专业建模师而言,面对机械零件、建筑构件或影视道具中那…...

自动同步总失败?NotebookLM本地缓存+云端快照双轨备份,手把手配置到上线仅需7分钟

更多请点击: https://intelliparadigm.com 第一章:NotebookLM数据备份方案 NotebookLM 是 Google 推出的基于用户上传文档进行 AI 助理问答的工具,但其本身不提供原生数据导出或持久化存储功能。为防止项目上下文丢失、模型重置或账户异常导…...

深入解析ACP Bridge:构建高效微服务通信与数据同步的协议转换桥梁

1. 项目概述与核心价值最近在折腾一个跨平台数据同步的项目,遇到了一个挺有意思的组件——allvegetable/acp-bridge。乍一看这个名字,可能会有点摸不着头脑,acp是什么?bridge又在这里扮演什么角色?实际上,这…...

技能图谱:构建结构化知识体系,实现高效学习与成长

1. 项目概述:一个技能图谱的诞生与价值在技术社区里,我们经常看到各种“Awesome List”——那些按领域整理的工具、库和资源清单。它们很有用,但总感觉缺了点什么。直到我偶然在 GitHub 上看到了tenequm/skills这个仓库,它给我带来…...

【USB3.0协议探秘】实战篇·三种复位事件的触发机制与链路状态变迁

1. 认识USB3.0的三种复位机制 刚接触USB3.0协议时,很多人会被各种复位类型绕晕。在实际开发中,我就遇到过因为混淆PowerOn Reset和Warm Reset导致设备无法正常初始化的情况。今天我们就来彻底搞懂这三种复位机制的区别和应用场景。 USB3.0协议定义了三种…...

凌晨两点还在逐行审计?DeepAudit 让我从焦虑到上瘾

前言 说起来不怕你们笑话,前段时间接了个小项目,上线前代码审计那几天,我基本天天熬到凌晨两点才敢合眼。不是我不想睡,是真睡不着——脑子里反复过那些没检查到的角落,SQL注入、XSS、权限绕过……每个词都像悬在头顶的…...

企业邮箱迁移技术方案:从旧邮箱平滑迁移至阿里 / 网易 / 谷歌

前言企业发展过程中,更换企业邮箱服务商属于常见运维需求,不少行政与运维人员担心迁移过程出现邮件丢失、通讯录错乱、收发中断等问题。掌握标准化迁移方案,可实现新旧邮箱无缝过渡,不影响日常商务对接与对内办公。本文分享通用迁…...

咸鱼大量流出430元几乎全新联想迷你图形工作站小主机,支持8-9代标压处理器,最高双NVME+2.5寸SATA三盘位,还可选配独立显卡!

相比于普通小主机,工作站主机产品在性能以及扩展方面更有看点,可玩性高的不是一点,两点。即使是过时淘汰的古董机器,价位也是居高不下,贩子控价原因是一方面,还有法拉利老了也是法拉利,捡垃圾也…...

3步完成网易云音乐ncm文件转换:免费高效的Windows图形界面工具完整指南

3步完成网易云音乐ncm文件转换:免费高效的Windows图形界面工具完整指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经从网易云音乐下载…...

基于Unsloth与LoRA的高效大语言模型微调工程化实践指南

1. 项目概述:一个为Unsloth优化的AI开发伴侣 如果你最近在折腾大语言模型(LLM)的微调,尤其是想在自己的消费级显卡上跑起来,那你大概率听说过或者正在用Unsloth。这个开源库通过一系列巧妙的优化(比如融合…...

Lenovo Legion Toolkit:拯救者笔记本的终极性能优化指南

Lenovo Legion Toolkit:拯救者笔记本的终极性能优化指南 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit 你是否曾…...

Fluentd命令行化实践:fluent_cli打造轻量级实时日志处理管道

1. 项目概述:一个高效的命令行日志处理工具最近在折腾一个分布式系统的日志收集链路,发现很多现成的日志处理工具要么太重,要么配置起来太繁琐。尤其是在需要快速查询、过滤和转换不同来源的日志流时,往往需要写一堆脚本&#xff…...

ARM Thumb指令集内存屏障详解:DMB、DSB与ISB

1. ARM Thumb指令集中的内存屏障指令概述在嵌入式系统和移动设备开发中,ARM处理器占据着主导地位。作为RISC架构的代表,ARM提供了多种指令集以适应不同场景的需求,其中Thumb指令集以其高代码密度著称。在多核处理器和并发编程场景下&#xff…...

【程序源代码】校园论坛仿知乎贴吧微信小程序系统(含源码)

关键字:发帖,搜索,校园社区,Vue,服务,系统,管理,springboot,java,h2项目名称:校园论坛(仿知乎贴吧)微信小程序系统微信小程序校园论坛(仿知乎贴吧)系统是基于SpringBoot框架开发的一款轻量化校园论坛&#…...

3分钟掌握:ncmdumpGUI免费转换网易云音乐ncm文件的完整指南

3分钟掌握:ncmdumpGUI免费转换网易云音乐ncm文件的完整指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经从网易云音乐下载了心爱的歌…...