R语言数据读取以及数据保存方式

一、R语言读取文本文件:

1、文件目录操作:

getwd() : 返回当前工作目录

setwd("d:/data") 更改工作目录

2、常用的读取指令read

read.table() : 读取文本文件

read.csv(): 读取csv文件

如果出现缺失值,read.table()会报错,read.csv()读取时会自动在缺失的位置填补NA

3、灵活的读取指令

scan() :

4、读取固定宽度格式的文件:

read.fwf()

文本文档中最后一行的回车符很重要,这是一个类似于停止符的标识,否则读入时会显示“最后一行不完整”的警告,但是不影响数据读入的效果。

5、读取Excel数据:

(1)第一种方法

首先打开Excel,选中需要的数据后复制,

然后再R中输入以下的指令:data.excel =read.delim("clipboard") #clipboard即剪贴板

(2)第二种方法:

使用RODBC包,获取Excel连接的函数是odbcConnectExcel()和odbcConnectExcel2007() 分别读取Excel2003版和2007版的数据channel =odbcConnectExcel2007("d:/a.xlsx")

sqlTables(channel)# 列出Excel中的表格

获取Sheet1中的数据,可以使用如下任意的一种方式,

data.excel2 =sqlFetch(channel,"Sheet1")
data.excel2 =sqlQuery(channel,"select * from [Sheet1$]")
close(channel) #关闭ODBC连接,释放空间

6、读取网页数据

readHTMLTable()函数

7、读取R格式的文件:

R的数据或者更一般的对象可以通过save()保存为R专有的文件格式,以Rdata为后缀,要读取此类文件,需要用到函数load()来加载,

8、readLines("d:/data/cat.txt"):

可以直接从连接中以行的形式来读取文本

要显示列表中的变量 需要使用符号$

二、数据保存:

1、使用函数cat()

cat(...,file="",sep="",fill = FALSE ,labels=NULL,append=FALSE) #file表示要输出的文件名,当参数append=TRUE时,在指定文件的末尾添加内容。sep:表示以空格作为分隔符

2、保存为文本文件:

write仅可以写出一个矩阵或向量的特定列,和对一个矩阵进行转置

write.table() 可以把一个数据框或列表等对象以包含行列标签的方式写出。

write.csv(): 将数据框保存为逗号分隔文件,但是不包含列名

3、保存R格式文件:

save(data,file="d:/data/salary1.Rdata")

dim():求维度

mode() 用来显示对象的类型

names():显示对象中的标签

补充:R语言读取数据、拆分数据,并保存到相应文件夹

将一张Excel表的数据按照第一列元素分组,分组后按照某种规则命名,并重新读入Excel中,放入指定的文件夹中。

如上所示的excel表,将sheet1中的数据按照“地域名称”拆分,并将数据放入相应的省份文件夹,如放入D盘的test文件夹中

D:\mydata\test

|__test
|___mydata.xlsx
|___安徽省
|___安徽省安庆市.xlsx
|___安徽省蚌埠市.xlsx
|___河北省
|__河北省蚌埠市.xlsx
|___……

假如数据最终的文件夹目录如上所示。代码可以作如下编写:

library(readxl) # 载入readxl包,使用read_excel读入excel文件
library(xlsx) # 载入xlsx包,使用write.xlsx保存文件为excel格式
# setwd()设置路径为D:\\mydata\\test'
setwd('D:\\mydata\\test')
# read_excel 读入数据,具体用法可使用帮助。
# 1表示读入第一张sheet,2表示读入第二张sheet,也可用sheet = "sheetname",默认第一行为标题行
dt = read_excel('mydata.xlsx', 2)
# unique() 过滤重复数据,保留唯一数据
# 此处过滤掉第2列和第3列的重复行,最终只剩下3行不重复数据,默认不含标题
province_city <- unique(dt[,2:3])
setwd('D:\\mydata\\test') # 设置当前路径为省份文件夹放置的目录
cdir <- setwd('D:\\mydata\\test')
# 循环次数 n=province_city 的行数
for (i in c(1:nrow(province_city [,1]))){
 # subset()读取子集,subset(data, data[, 1] == "a") 读取data中第一列所有为a的行
 dt1 <- subset(dt, dt[,2]==as.character(province_city[i,1]))
 # paste,设置filename, 即安徽省,河北省
 cfilename = paste(province_city[i,1],".xlsx",sep = "")
 # 用于下面的if语句判断 创建的“安徽省”目录是否存在
 f_dir = paste('D:\\mydata\\test\\',province_city[i,2],sep="")
 # 创建的“安徽省”目录不存在,则创建;存在则不动作. F 表示False
 if (file.exists(f_dir) == F){
 dir.create(province_city[i,2])
 }else { }
 # 设置文件名称,即安徽省安庆市.xlsx
 c_dir = paste('D:\\mydata\\test\\',province_city[i,2],sep = "")
 # 设置c_dir为当前路径
 setwd(c_dir)
 # write.xlsx 将所需的文件列保存到上述设置的文件中,col.names=TRUE包含标题
 write.xlsx(dt1[,2:5],cfilename,col.names=TRUE,showNA=FALSE)
 # 设置路径为cdir,进入到下一次循环
 setwd(cdir)
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • R语言-如何读取前n行数据

    通常我们读取文件时都会读取全部的文件然后再进行操作,但是当读取的数据量很大是读取的时间会很长,而且占用RAM,对于写测试代码有点不方便. 所以只读取前n行数据是一个挺不错的函数 ##file:读取文件路径 ##n:读取的前n行 ##header:是否有标题行 readfile<-function(file, n=1000, header=T){ pt <- file(file, "r") name <- NULL if(header){ name <- strs

  • R语言读取excel数据的方法(两行命令)

    安装库 安装xlsx install.packages("xlsx") 使用 library(xlsx) ray = read.xlsx('D:/Code/R/Data in Excel/Chapter 8/gamma-ray.xls',1) 后面的参数,第一个放地址,第二个放具体sheet页(这里除了可以放数值之外,还可以放对应的名字(字符串)).除此之外,还可以使用encoding="utf-8"的方式来定义使用中文数据. 效果: > a = read.x

  • R语言学习笔记缺失数据的Bootstrap与Jackknife方法

    目录 一.题目 二.解答 a)Bootstrap与Jackknife进行估计 b)均值与变异系数(大样本)的标准差解析式推导与计算 c)缺失插补前的Bootstrap与Jackknife d)比较各种方式的90%置信区间情况(重复100次实验) 填补之前进行Bootstrap或Jackknife 填补之后进行Bootstrap或Jackknife 一.题目 下面再加入缺失的情况来继续深入探讨,同样还是如习题1.6的构造方式来加入缺失值,其中a=2, b = 0 我们将进行如下几种操作: 二.解答

  • 关于R语言lubridate包处理时间数据的问题

    加载包 # install.packages(lubridate) library(lubridate) 第一个函数ymd():解析日期为年月日格式 x <- c("09-01-01", "09-01-02", "09-01-03") ymd(x) [1] "2009-01-01" "2009-01-02" "2009-01-03" x <- c("2009-01-

  • R语言刷题检验数据缺失类型过程详解

    目录 题目 解答 下面考虑三种情况: 1. a = 0, b = 0 2. a = 2, b = 0 3. a = 0, b = 2 题目 解答 由于题目要求需要重复三次类似的操作,故首先载入所需要的包,构造生成数据的函数以及绘图的函数: library(tidyr) # 绘图所需 library(ggplot2) # 绘图所需 # 生成数据 GenerateData <- function(a = 0, b = 0, seed = 2018) { set.seed(seed) z1 <- r

  • R语言批量读取某路径下文件内容的方法

    R刚入门的时候,能够正确读取单个文件就觉得小有成就,随着时间的积累,单一文件地读取已经不能满足需求了,此时,批量地做就是解放双手地过程. 使用for循环把下载地TCGA数据读入R语言并转换成数据框 使用三个for循环来完成,这是第一个for循环. 1. 把所有数据读入在一个文件夹中 dir.create("data_in_one") #创建目标文件夹,也可右键创建 dir("rawdata/") #查看原路径的内容 for (dirname in dir("

  • R语言数据读取以及数据保存方式

    一.R语言读取文本文件: 1.文件目录操作: getwd() : 返回当前工作目录 setwd("d:/data") 更改工作目录 2.常用的读取指令read read.table() : 读取文本文件 read.csv(): 读取csv文件 如果出现缺失值,read.table()会报错,read.csv()读取时会自动在缺失的位置填补NA 3.灵活的读取指令 scan() : 4.读取固定宽度格式的文件: read.fwf() 文本文档中最后一行的回车符很重要,这是一个类似于停止符

  • R语言-使用ifelse进行数据分组

    数据分组,根据数据分析对象的特征,按照一定的数值指标,把数据分析对象划分为不同的区间部分来研究,以揭示内在的联系和规律性: 在R中,我们常用ifelse函数来进行数据的分组,跟excel中的if函数是同一种用法. ifelse(condition,TRUE,FALSE) > data <- read.table('1.csv', sep='|', header=TRUE); > > level <- ifelse( + data$cost<=20, "(0,2

  • R语言可视化存储矢量图实现方式

    目录 1. R 中自带的默认绘图 1) PDF 格式 2) EPS 格式 2. ggplot 绘图 1) PDF 格式 2) EPS 格式 之前写的博客中有提及过如何在 R 语言中绘制矢量图,然后用于论文引用.但没有专门开一篇博客来进行说明比较,这里重新开一篇博客来进行说明. 通常保存为矢量图可能大多数时候是为了论文中的引用,所以格式一般为 EPS, PDF 这两种格式,这里也主要针对这两种格式进行说明. 1. R 中自带的默认绘图 通常我们使用 plot(), lines(), points(

  • R语言-因子与向量的转换方式

    一.因子的特点或性质 1.因子可视为C或JAVA语言中的枚举,适用于有限状态的表示. 2.因子不可以赋枚举集合外的值,如一个因子包含male,female,则不能再赋male和female以为的值,赋其他值会将该元素设置为空值. 二.因子的建立 1.因子的建立 假定有因子gendor,为一组人的性别: > gendor<-factor(c('m','f','f','m'),labels=c('male','female')) 则通过上式建立一个性别因子. > gendor [1] fem

  • R语言中矩阵matrix和数据框data.frame的使用详解

    本文主要介绍了R语言中矩阵matrix和数据框data.frame的一些使用,分享给大家,具体如下: "一,矩阵matrix" "创建向量" x_1=c(1,2,3) x_1=c(1:3) x_2=1:3 typeof(x_1)==typeof(x_2)#查看目标类型 x_3=seq(1,6,length=3)#将1--6分为3个数 a<-rep(1:3,each=3) #1到3依次重复 c<-rep(1:3,times=3) #1到3重复3次 d<

随机推荐