R语言基础(七):文件处理 您所在的位置:网站首页 r语言导出excel文件 R语言基础(七):文件处理

R语言基础(七):文件处理

2023-03-14 22:11| 来源: 网络整理| 查看: 265

R语言基础(一):注释、变量 R语言基础(二):常用函数 R语言基础(三):运算 R语言基础(四):数据类型 R语言基础(五):流程控制语句 R语言基础(六):函数

8. 文件处理 8.1 csv文件

​ csv文件是一种简单的文本文件,它有行列形式,但不像Excel那么复杂,csv文件是一个纯文本文件,但可以当做表格使用,列与列之间用英文逗号隔开。创建一个name.csv文件

姓名,性别,年龄 张三,男,20 李四,女,19 王五,男,25 8.1.1 读取csv

使用R读取csv文件:

> setwd("D:/") #设置当前目录 > data data 濮撳悕 鎬у埆 骞撮緞 1 寮犱笁 鐢,20 NA 2 鏉庡洓 濂,19 NA 3 鐜嬩簲 鐢,25 NA #加上encoding解决中文乱码问题,在文件末尾加一个空行消除Warning message > data data 姓名 性别 年龄 1 张三 男 20 2 李四 女 19 3 王五 男 25 >

读取csv的结果data是一个数据帧data frame类型,对数据帧所有的操作都适用

> str(data) 'data.frame': 3 obs. of 3 variables: $ 姓名: chr "张三" "李四" "王五" $ 性别: chr "男" "女" "男" $ 年龄: int 20 19 25 > age age [1] 25 8.1.2 写入csv

用write.csv()写入文件

> data newrow = data.frame( 姓名 = c("小明"), 性别 = c("男"), 年龄 = c(19) ) #在原来数据帧中写一行 > data = rbind(data,newrow) > data 姓名 性别 年龄 1 张三 男 20 2 李四 女 19 3 王五 男 25 4 小明 男 19 #保存文件row.names = FALSE去掉前面的1234 > write.csv(data,"new.csv", row.names = FALSE)

保存后的文件:

"姓名","性别","年龄" "张三","男",20 "李四","女",19 "王五","男",25 "小明","男",19 8.2 Excel文件

安装依赖包

> any(grepl("xlsx",installed.packages())) #验证是否安装 [1] FALSE #没安装 > install.packages("xlsx") #开始安装 --- 在此連線階段时请选用CRAN的鏡子 --- 还安装相依关系‘rJava’, ‘xlsxjars’ > library("xlsx") #加载软件包

准备一个excel文件,data.xlsx

月份交通费办公损耗人力成本结算日期1月17.8454.1827.982020/1/312月18.2135.146.692020/2/283月46.6318.1235.252020/3/314月35.8948.5715.542020/4/295月47.013.4249.572020/5/306月36.831.4261.752020/6/307月8.7143.5547.742020/7/31 8.2.1 读取excel

读取Excel的时候如果有中文需要加encoding参数,否则会报错:

> data = read.xlsx("D:/data.xlsx",sheetIndex=1) #中文要加encoding Error in make.names(vnames, unique = TRUE) : 多字节字符串3有错 > data = read.xlsx("D:/data.xlsx",sheetIndex=1,encoding = "UTF-8") > data 月份 交通费 办公损耗 人力成本 结算日期 1 1月 17.84 54.18 27.98 2020-01-31 2 2月 18.21 35.10 46.69 2020-02-28 3 3月 46.63 18.12 35.25 2020-03-31 4 4月 35.89 48.57 15.54 2020-04-29 5 5月 47.01 3.42 49.57 2020-05-30 6 6月 36.83 1.42 61.75 2020-06-30 7 7月 8.71 43.55 47.74 2020-07-31 8.2.2 写入excel > newrow = data.frame( 月份 = c("8月"), 交通费 = c(10), 办公损耗 = c(20), 人力成本 = c(30), 结算日期 = c('2020-08-30') ) > data = rbind(data,newrow) #加入一行 > write.xlsx(data,"new.xlsx", row.names = FALSE) #写新文件 #在原文件追加一个sheet > write.xlsx2(data,"data.xlsx", row.names = FALSE,append=TRUE,sheetName="Sheet2") > 8.3 XML文件

安装xml依赖的包

> install.packages("XML") > library("XML")

准备xml文件user.xml

1 张三 2 李四 8.3.1 读取xml文件 #加载xml > data = xmlParse(file="user.xml") #提取根节点 > root=xmlRoot(data) #获取子节点个数 > xmlSize(root) [1] 2 #读取第一个节点 > root[1] $user 1 张三 #读取第一个节点的第二个属性 > root[[1]][[2]] 张三 #将数据转成list > list_data data=xmlToDataFrame("user.xml") > data id name 1 1 张三 2 2 李四 8.3.2 写入xml

安装依赖包

> install.packages("Runiversal") > library(Runiversal) #写入 cat(makexml(data),file = "options.xml") 8.4 JSON文件

​ JSON全名是JavaScript Object Notation(JavaScript 对象表示法)。现在JSON不只局限在JavaScript中,各种编程语言都对JSON提供了支持,JSON也是网络传输中很重要的一种格式。可以把JSON理解为符合一定格式的字符串。

​ JSON是以key-value形式存储的数据,大括号{}用于包裹对象,中括号[]用于包裹集合(类似于list和array的数据)。key就是属性名,可以用引号包裹,value就是属性值,String类型的值用引号包裹,key和value之间用英文冒号:隔开。

准备数据data.json

{ "name" : ["张三","李四","王五"], "age" : [20,25,28] }

安装JSON包

> install.packages("rjson") > library("rjson") > json=fromJSON(file="data.json") > data=data.frame(json) > data name age 1 张三 20 2 李四 25 3 王五 28 >

也可以使用另一个包,支持更好一些

> install.packages("jsonlite") > library(jsonlite) #注意切换包 > data=fromJSON("data.json") #数据转换成json > json=toJSON(data,pretty=TRUE) #写入文件 > cat(json, file = (con close(con) 8.5 MySQL数据库

MySQL是一种常用的非关系型数据库。

在test库中准备数据表dept

id name ------ ----------- 1 技术部 2 测试部 3 商务部 4 运营部 5 财务部 6 拓展部 #安装库 > install.packages("RMySQL") > library(RMySQL) > conn = dbConnect(MySQL(), user = 'xx', password = 'xx', dbname = 'xx',host = 'localhost') > dbSendQuery(conn,'SET NAMES gbk') #解决中文乱码 > result = dbSendQuery(conn, "select * from dept") #查询 > data=fetch(result, n = 2) #取结果集前两条 > dbClearResult(result) #关闭结果集 #添加数据 > dbSendQuery(conn,"insert into dept(name) values('行政部')") > dbDisconnect(conn) #关闭连接


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有