数据文件的读写

在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),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值。

参考文献

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

数据文件的读写—R实现的更多相关文章

  1. Python基础 | 数据文件的读写

    目录 txt txt的读入 txt的写出 csv xls\xlsx 在线网页数据 常用的工具 爬虫的步骤 pdf pdfrw PyPDF2 提取文档信息 word文档 其他统计软件生成文件 本文总结使 ...

  2. 营销MM让我讲MySQL日志顺序读写及数据文件随机读写原理

    摘要:你知道吗,MySQL在实际工作时候的两种数据读写机制? 本文分享自华为云社区<MySQL日志顺序读写及数据文件随机读写原理>,作者:JavaEdge . MySQL在实际工作时候的两 ...

  3. Numpy数组数据文件的读写

    一.引言 读写数据文件的重要性就不必多说了. 二.读取列表形式数据的文件 1.我们写几行CSV格式(列表形式,两值之间逗号隔开)的数据. id,height,age 1,175,20 2,168,18 ...

  4. Java 对不同类型的数据文件的读写操作整合器[JSON,XML,CSV]-[经过设计模式改造](2020年寒假小目标03)

    日期:2020.01.16 博客期:125 星期四 我想说想要构造这样一个通用文件读写器确实不容易,嗯~以后会添加更多的文件类型,先来熟悉一下文件内容样式: <?xml version=&quo ...

  5. MATLAB中文件的读写和数据的导入导出

    http://blog.163.com/tawney_daylily/blog/static/13614643620111117853933/ 在编写一个程序时,经常需要从外部读入数据,或者将程序运行 ...

  6. python 基础-文件读写'r' 和 'rb'区别

    原文链接: python基础-文件读写'r' 和 'rb'区别 一.Python文件读写的几种模式: r,rb,w,wb 那么在读写文件时,有无b标识的的主要区别在哪里呢? 1.文件使用方式标识 'r ...

  7. Python数据分析之Pandas读写外部数据文件

    1 引言 数据分析.数据挖掘.可视化是Python的众多强项之一,但无论是这几项中的哪一项都必须以数据作为基础,数据通常都存储在外部文件中,例如txt.csv.excel.数据库.本篇中,我们来捋一捋 ...

  8. C语言的fopen函数(文件操作/读写)

    头文件:#include <stdio.h> fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为:    FILE * fopen(const char * path, c ...

  9. rsync+sersync实现数据文件实时同步

    一.简介 sersync是基于Inotify开发的,类似于Inotify-tools的工具: sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字: ...

  10. 从零开始学C++之IO流类库(三):文件的读写、二进制文件的读写、文件随机读写

    一.文件的读写 如前面所提,流的读写主要有<<, >>, get, put, read, write 等操作,ofstream 继承自ostream, ifstream 继承自 ...

随机推荐

  1. Jetpack compose学习笔记之自定义layout(布局)

    一,简介 Compose中的自定义Layout主要通过LayoutModifier和Layout方法来实现. 不管是LayoutModifier还是Layout,都只能measure一次它的孩子Vie ...

  2. 修改AXI UART D16550 FIFO深度的过程记录

    仅限于AXI UART 16550 v. 2.0,其他版本可能存在差异,经过实际测试,可以将fifo深度从默认的16成功修改为32.128和256.参考了两篇帖子中提到的方法,分别是修改AXI UAR ...

  3. conda相关的设置备忘

    因为默认channel已经没有3.4.4(最后一个支持xp的python3)了,为了添加这个的版本,尝试先用conda-forge channel: conda create -n myenv pyt ...

  4. QThead实现模拟VC线程函数

    // 头文件 #ifndef QTHREADBASE_H #define QTHREADBASE_H #include <iostream> #include <stdlib.h&g ...

  5. android系统上编写、运行C#代码

    最近找到个好玩的APP,C#Shell (Compiler REPL),可以在安卓系统上编写和运行C#代码,配合sqlite数据库,写了个小爬虫,运行还不错: 运行一些小爬虫或者定时任务可以用这个,毕 ...

  6. What is RSS

    What is RSS?RSS (Rich Site Summary) is a format for delivering regularly changing web content. Many ...

  7. 网页返回unicode源码 python解码详细步骤

    刚入门python! 记录一下网页返回源码,中文部分被unicode编码,python如何处理 1.先提取编码后的数据(如果不提取正篇源码直接unicode解码,解码方法无法识别) 这个步骤属于逻辑问 ...

  8. Pytorch Cross Entropy

    Entropy Uncetainly measure of surprise higher entropy = less info \[Entropy = -\sum_i P(i)\log P(i) ...

  9. cvs 常见命令

    一.cvs上传一个新的工程到server 假如上传目录test到xxxx_project下1. copy test到xxxx_project2. 删除test目录及子目录下的CVS目录3. 在xxxx ...

  10. R 曲线拐点

    x = seq(1,15) y = c(4,5,6,5,5,6,7,8,7,7,6,6,7,8,9) plot(x,y,type="l",ylim=c(3,10)) lo < ...