今天笔记的主要内容是R语言里文件相关知识,包含CSV、Excel、XML、JSON、MySQL等。
CSV文件
基本介绍
CSV(Comma-Separated Values,字符分隔值,分隔字符也可以不是逗号)是一种非常流行的表格存储文件格式,这种格式适合储存中型或小型数据规模的数据。
CSV
本质是文本,格式简单:数据一行一行的用文本保存,每条记录被分隔符分隔为字段,每条记录都有同样的字段序列。
- 规则:
1 开头是不留空,以行为单位。
2 可含或不含列名,含列名则居文件第一行。
3 一行数据不跨行,无空行。
4 以半角逗号(即,)作分隔符,列为空也要表达其存在。
5 列内容如存在半角引号(即"),替换成半角双引号("")转义,即用半角引号(即"")将该字段值包含起来。包含逗号, 双引号, 或是换行符的字段必须放在引号内。
6 文件读写时引号,逗号操作规则互逆。
7 内码格式不限,可为 ASCII、Unicode 或者其他。
8 不支持数字
9 不支持特殊字符
注意:CSV 文件最后一行需要保留一个空行,不然执行程序会有警告信息。
读取方法
read.csv()
函数来进行读取,返回的结果为数据框格式。
data <- read.csv("xxx.csv", encoding="UTF-8") # encoding默认为操作系统文字编码GBK,这里统一为UTF-8防止出错。 print(data)
读取后可以对数据进行查看,例如查看行数、列数,查询某列最大值、指定值,筛选等操作。
#输出data中col列的最大值 max_number = max(data$col) #输出data中cola列等于xx同时colb列小于mm的数据。 out_n = subset(data,cola == xx & colb < mm )
保存方法
write.csv(待输出文件,文件路径)
函数将数据保存为csv文件。待保存的数据最好是数据框形式。
write.csv(data,"data.csv",row.names = FALSE) # 将data数据输出保存为csv文件 # row.names = FALSE 表示不添加行名,默认为TRUE,一般不需要开启。
Excel文件
基本介绍
Excel是我们熟知的一种数据文件格式,非常通用,R语言中读写 Excel文件需要安装扩展包"xlsx"。
install.packages("xlsx", repos = "https://mirrors.ustc.edu.cn/CRAN/") library("xlsx")
几乎所有的 Excel 软件与大多数表格软件一样支持 CSV 格式的数据,所以完全可以通过 CSV 与 R 交互,没必要再使用 Excel。
读取方法
# 读取 xxx.xlsx 第一个工作表数据 data <- read.xlsx("xxx.xlsx", sheetIndex = 1) print(data)
保存方法
write.xlsx( x, #data.frame格式的待保存文件 file, #保存路径 sheetName="Sheet1", #工作表名称 col.names=TRUE, #列名 row.names=TRUE, #行名 append=FALSE, #续写状态,TRUE为在源文件上补充,反之为覆盖 showNA=TRUE #显示缺失值 )
想要将data1写da.xlsx的sheet1、data2写da.xlsx的sheet2中,如下:
write.xlsx(x, file, sheetName="sheet1") write.xlsx(x, file, sheetName="sheet2",append=TRUE)
XML文件
XML 是可扩展标记语言(eXtensible Markup Language),被设计用来传输和存储数据。R语言读写 XML 文件需要安装扩展包:
install.packages("XML", repos = "https://mirrors.ustc.edu.cn/CRAN/")
查看XML文件
查看节点数据,某一行使用 [ ]
, 指定的行和列使用 [[ ]][[]]
。
# 载入 XML 包 library("XML") # 设置文件名 out_1 <- xmlParse(file = "xxx.xml") # 提取根节点 r_n <- xmlRoot(out_1) # 查看第 2 个节点数据 print(rn[2]) # 查看第 2 个节点的第 3 个数据 print(rn[[2]][[3]])
转换XML数据
- 转化为列表
library("XML") xml_data <- xmlToList(out_1)
- 转化为数据框
library("XML") xml_dataframe <- xmlToDataFrame("xxx.xml")
JSON 文件
JSON 是存储和交换文本信息的语法,类似 XML,但比 XML 更小、更快,更易解析,R语言读写JSON 文件需要安装扩展包。
install.packages("rjson", repos = "https://mirrors.ustc.edu.cn/CRAN/") library("rjson")
载入数据
result <- fromJSON(file = "xxx.json")
查看数据:输出第5行使用 [5]
, 输出3行4列使用 [[3]][[4]]
。
# 输出第 1 列的结果 print(result[1]) # 输出第 2 行第 2 列的结果 print(result[[2]][[2]])
转化数据
as.data.frame()
函数能够把json文件转化为数据框类型,方便后续处理。
# 载入 rjson 包 library("rjson") # 获取 json 数据 result <- fromJSON(file = "xxx.json") # 转为数据框 out_data <- as.data.frame(result)
MySQL 文件
MySQL是最流行的关系型数据库管理系统,R 语言读写 MySQL 文件需要安装扩展包。
install.packages("RMySQL", repos = "https://mirrors.ustc.edu.cn/CRAN/") #原版 install.packages("RMariaDB", repos = "https://mirrors.ustc.edu.cn/CRAN/") #复制版本
读取数据
library(RMySQL) # dbname 为数据库名 mysqlconnection = dbConnect(MySQL(), user = 'root', password = 'xxxx', dbname = 'test',host = 'localhost') # 查看数据 dbListTables(mysqlconnection)
使用 dbSendQuery
来读取数据库的表,结果集通过 fetch()
函数来获取。library(RMySQL)
# 查询 sites 表 result = dbSendQuery(mysqlconnection, "select * from sites") # 获取前面两行数据 data.frame = fetch(result, n = 2)