数据文件的读写—R实现

2023-06-26,,

数据文件读写

在R语言中可以读写的最基本的数据格式就是text,以及csv文件。用read.table()或者read.csv函数就可以,相应的写入函数是write.table(),write.csv()。对于其它的格式文件,R语言有相应的包支持,我们最经常用的xlsx格式需要导入library(openxlsx)

一、准备工作

为方便后面使用的相对路径,我们先使用“setwd(路径)”设置路径,设置好之后可以用“getwd()” 获取当前路径进行检查。

getwd()                             #获得当前工作路径,即数据文件的工作场所,R的工作环境
setwd(路径) #设置工作路径 以便R能找到你的数据文件

读取文件函数简介

read.table(file, header = FALSE, sep = "", quote = "\"'", dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
row.names, col.names, as.is = !stringsAsFactors,na.strings = "NA", colClasses = NA, nrows = -1,
skip = 0, check.names = TRUE, fill = !blank.lines.skip,strip.white = FALSE, blank.lines.skip = TRUE,
comment.char = "#",allowEscapes = FALSE, flush = FALSE,
stringsAsFactors = FALSE,fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
#file 文件路径 #sep 分隔符 #header
第一行是不是列名(如果第一行是列名导入的时候填TRUE;默认值是FALSE,即把第一行算作数据)

注意数据分隔符:

因为数据有时候是从数据库导出或者.xlsx里截取等等,所以有时候看起来是空白分隔却有着不一样的格式。

常见空白分隔符有:空格,制表符,换行符。sep=” ”;sep = “\t”;sep = “\n”

二、读数据

这个比较简单,直接调用函数即可,参数就是 文件的路径,当然还有其它的一些参数,自行试一试就知道了。如果不太清楚有哪些参数的,调用help函数看一下就ok了。当我们读入的是其它的格式文件时也需要加载相应的包。

2.1 读取TXT数据

将工作路径调制要导入文件所在的文件夹下,之后输入.txt的文件名和分隔符就可以导入数据了。

data1 <- read.table('test.txt',sep = '\t',header = TRUE)
data1

2.2 读取CSV文件

data2 <- read.csv('countrylanguage.csv',TRUE)
head(data2,6)

2.3 读取Excel文件

R语言是一个大小写敏感的语言,加载好openxlsx包就可以开始读取Excel文件了。

(1)从剪贴板导入

先打开Excel,选中需要的数据后复制,然后再R中输入以下的指令:data.excel =read.xlsx("clipboard") #clipboard剪贴板

data3 <- read.table("clipboard",header=T)
data3

(2)从Excel文件导入

#install.packages("openxlsx")
library(openxlsx)
dada4<- read.xlsx(file,sheet=1)
data4

2.4 批量读取多个 Excel 文件

批量读取的数据文件往往具有相同的列结构(列名、列类型),读入后紧接着需要按行合并为一个数据框。批量读取并合并,道理很简单,总共分三步:获取批量数据文件的路径;循环机制批量读取;合并成一个数据文件。

library(purrr)
library(readxl)
files = list.files("C:/Users/hao'hai/Documents", pattern = "xlsx",full.names = TRUE, recursive = FALSE) #查找指定路径下的EXCEL文件
#[1] "C:/Users/hao'hai/Documents/hh1.xlsx"
#[2] "C:/Users/hao'hai/Documents/hh2.xlsx"
#[3] "C:/Users/hao'hai/Documents/hh3.xlsx"
df = map_dfr(set_names(files), read_xlsx, .id = " 来源") #合并路径下的EXCEL文件数据为df
df #查看合并数据
# `来源` 年龄 性别 风险 专兼职 职业 教育 结果
# <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#1 C:/Users/hao'hai/Documents/hh~ 30-39 女 无 专职 无业 研究~ 持平
#2 C:/Users/hao'hai/Documents/hh~ 30-39 男 有 兼职 干部 文盲 持平
#3 C:/Users/hao'hai/Documents/hh~ 30-39 男 有 兼职 干部 文盲 持平

三、写入数据文件

3.1 写入函数简介

write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ", eol = "\n", na = "NA", dec = ".", row.names = TRUE,col.names = TRUE, qmethod = c("escape", "double"),  fileEncoding = "")

可以保存成任意符号分隔的文件write.table(data,file,sep),保存成文件的类型要自己以扩展名的方式写在‘file'字段里,比如test.csv,test.doc,test.xlsx,write.table()和write.csv()就可以完成。比较实用的参数就是列名col.name,行名row.name,以及引号quote,一般我们输出的数据有引号,如果想去除的话把quote设置为F就好。其它格式文件类似。

3.2 写入CSV文件

# 写入文件
data(iris)
write.csv(iris,file = "mydata.csv",row.names = F)
# 读文件
data4<-read.table("mydata.csv",header=T, sep=",")
head(data4)

3.3 写入Excel文件

aa<-data.frame(id = 1:5,y = rnorm(5))
bb<-data.frame(id = 1:7,y = rnorm(7))
# install.packages("openxlsx") #如果没有openxlsx包,运行该命令
library(openxlsx)
sheets = list("我是aa" = aa,"我是bb" = bb)
write.xlsx (sheets,"我是输出结果.xlsx")

四、总结

这篇文章主要介绍R语言文本文件读写(txt/csv/xlsx),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值。

参考文献

    (R语言 数据的读写)[https://blog.csdn.net/xiaonanxinyi/article/details/103080589]
    (R语言-如何循环读取excel并保存为RData)[https://www.yht7.com/news/140857]
    (R语言新书】2.2 数据读写)[https://zhuanlan.zhihu.com/p/256284851]

数据文件的读写—R实现的相关教程结束。

《数据文件的读写—R实现.doc》

下载本文的Word格式文档,以方便收藏与打印。