【R语言新书】2.2 数据读写
https://zhuanlan.zhihu.com/p/198185888
2.2.1 数据读写的包与函数
先来罗列一下读写常见数据文件的包和函数,具体使用可查阅其帮助。
1. readr 包
读写带分隔符的文本文件,如 和 ; 也能读写序列化的 R 对象,若想保存数据集后续再加载回来, 将保存元数据和该对象的状态,如分组和数据类型。读入数据到数据框: 和 读入欧式格式数据【注1】: 和 读写 数据: 和 写出数据到文件:, , , 解析数据:, , 等注1: 欧式格式数据以“;” 为分隔符,“,” 为小数位.
2. readxl 包
专门读取 Excel 文件,包括同一个工作簿中的不同工作表。: 自动检测 或 文件: 读取 文件: 读取 文件
读写 Excel 文件好用的包,还有 .
3. haven 包
读写 SPSS, Stata, SAS 数据文件。读:, , 写:, ,
4. readtext 包
读取全部文本文件的内容到数据框,每个文件变成一行,常用于文本挖掘【注2】或数据收集; 还支持读取 等。: 返回数据框, 列为文档标识, 列为读取的全部文本内容(1
个字符串)。注2: 做文本挖掘 R 包有 ,中文文本挖掘相比英文多了 包分词的前期步骤.
2.2.2 数据读写实例
以读取 csv 和 Excel 文件为例演示,读取其它类型的数据文件,换成其它读取函数即可。
1. 读入单个 csv 文件
2. 批量读取 Excel 文件
批量读取的数据文件往往具有相同的列结构(列名、列类型),读入后紧接着需要按行合并为一个数据框。批量读取并合并,道理很简单,总共分三步:批量数据文件的路径循环机制批量读取合并成一个数据文件
强大的 包,使得后两步可以同时做,即借助
比如,在 文件夹下有 5 个 xlsx 文件,每个文件的列名都是相同的:
首先要得到要导入的全部 Excel 文件的完整路径,可以任意嵌套,只需将参数 设为 :
接着,用 在该路径向量上做迭代,应用 到每个文件路径,再按行合并。另外,再多做一步:用 将文件路径字符向量创建为命名向量,再结合参数 将路径值作为数据来源列。
函数 的其它控制读取的参数,可直接"作为” 参数在后面添加,或改用 风格公式形式:
若批量 Excel 数据是来自同一 xlsx 的多个 sheet
还是上述数据,只是在 "学生成绩.xlsx” 的 5 个 sheet 中:
3. 写出到一个 Excel 文件
用 包中的 和 ,或 包中的 可以保存数据到文件。
以写出到 Excel 文件为例:
4. 批量写出到多个 Excel 文件
比如有多个数据框,存在一个列表中,依次将它们写入文件,需要准备好文件名;在该数据框列表和文件名上,依次应用写出函数 ,又不需要返回值,故适合用 包中的 函数:
5. 保存与载入 rds 数据
除了 和 函数外,下面以导出数据到 文件为例,因为它能保存数据框及其元数据,如数据类型和分组等。
2.2.3 关于中文编码
中文乱码是让很多编程者头痛的问题。
1. 什么是编码?
文字符号在计算机中是用 和 的字节序列表示的,编码就是将字节序列与所要表示的文字符号建立起映射。
要把各个国家不同的所有文字符号(字符集)正常显示和使用,需要做两件事情:各个国家不同的所有文字符号一一对应地建立数字编码数字编码按一定编码规则用 表示出来
第一件事情已有一种 编码(万国码)来解决:它给全世界所有语言的所有文字符号规定了独一无二的数字编码,字符间分隔的方式是用固定长度字节数。
这样各个国家只需要做第二件事情:为自己国家的所有文字符号设计一种编码规则来表示对应的 编码【注3】。注3: Unicode 为了表示"万国"语言,额外增大了存储开销,这第二件事也顺便节省存储开销。
再来说中国的第二件事情:汉字符号(中文)编码。历史原因产生了多种中文编码,从图来看更直观:
所谓兼容性,可以理解为子集,同时存在也不冲突。由图 2.3 可见,(128 个字母和符号,英文够用)被所有编码兼容,而最常见的 与 之间除了 部分之外没有交集。
文件采用什么编码方式,就用什么编码方式打开。只要是用不兼容的编码方式打开文件,就会出现乱码,日常最容易导致乱码场景就是:
(国标扩展)系列,根据包含汉字符号从少到多,依次是: 只包含 6763 个汉字: 包含 20902 个汉字,基本足够用: 又分 和 ,包含七万多个汉字 编码的汉字基本是2 字节,节省空间,但只适合国内中文环境。
编码( 转换格式),是 的再表示,支持各个国家的文字符号,兼容性非常好。所以,目前 有一统天下的趋势。
是一种变长编码,解决字符间分隔的方式是通过对二进制中最高位连续 1 的个数来决定该字是几字节编码。所有常用汉字的 值均可用 3 字节的 表示出来。
通常不带 (字节序标记 ,位于文件的前 3 个字节)也不需要带,但 Windows 历史遗留问题又会经常遇到有 的数据文件。
其它常见的编码:: 不是真正的编码,而是 Windows 系统的默认编码的统称,对于简体中文系统就是;对于繁体中文系统就是 等: 又称 ,欧洲人发明的编码,也是 MySQL 的默认编码: 用 格式存储 时,根据两个字节谁在前谁在后,分为 (小端)和 (大端), : 的另两种再表示,分别用 2 字节和 4 字节。
2. 中文乱码的解决办法
首先,查看并确认你的 windows 系统的默认编码方式:
代码936 就表明是 "中国- 简体中文(GB2312)"。
大多数中文乱码都是 与 不兼容导致的,常见的有两种情形。
R 文件中的中文乱码
在你的电脑不中文乱码的 R 脚本、Rmarkdown 等,拷贝到另一台电脑上时出现中文乱码。
解决办法:前文在配置 Rstudio 时已讲到,设置 – 的 为兼容性更好的 .
读写数据文件中文乱码
数据文件采用什么编码方式,就用什么编码方式打开或读取。采用了不兼容的另一种编码打开或读取,肯定出现中文乱码。
下面以最常见的中文编码 、、 来讲解。
不局限于上述编码,一个数据文件只要知道了其编码方式,就可以通过在读写时指定该编码而避免乱码。那么关键的问题就是:怎么确定一个数据文件的编码?
Notepad++是一款优秀开源的文本编辑器,用它打开数据文件,点编码,在下拉菜单黑点标记的编码方式即为该文件的编码,还可以对数据文件做编码转换:
另外, 包和 包(爬虫)都提供了函数 ,可检测文本和网页的编码方式;python 有一个 库在检测文件编码方面更强大。
主要参考文献
李东风 R语言教程,2020
Desi Quintans, Jeff Powell. Working in the Tidyverse.http://www.hiercourse.com/
腾讯:程序员必备:彻底弄懂常见的7种中文字符编码
________________________________
版权声明:原创作品,版权所有,禁止用于一切出版。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/92079.html