【R语言】获取数据
R语言自带2种数据存储格式:*.RData和*.rds。
这两者的区别是:前者既可以存储数据,也可以存储当前工作空间中的所有变量,属于非标准化存储;后者仅用于存储单个R对象,且存储时可以创建标准化档案,属于标准化存储。
load()函数:读取*.RData格式的数据;
readRDS()函数:读取*.rds格式的数据。
一、读取文本数据
R语言使用read.table()函数读取文本文档txt数据。
read.table()函数的5个参数:
- file:需要导入的文本数据文件路径和名称,可以是txt、dat、csv等
- header:导入时是否带有列标题,默认为TRUE
- sep:列与列之间的文本分隔符
- stringsAsFactor:导入数据时是否将字符串数据转为因子,默认为TRUE
- fileEncoding:文本数据的文件编码,默认设置为UTF-8
R语言的base包中还有read.csv(),read.csv2(),read.delim(),read.delim2()等函数。
以下为示例:
data <- read.table(file = "D:/Application/21.R语言/test.txt", header=T, sep=",",stringsAsFactor=F,fileEncoding="UTF-8")
head(data)
二、读取Excel数据
1、使用openxlsx包读取
openxlsx包主要通过getSheetNames()函数和read.xlsx()函数实现对Excel数据的读取。
# 先检查是否已安装了openxlsx包,如果没有,则先安装
if (!require("openxlsx")) {
install.packages("openxlsx")
}
data1 <- openxlsx::read.xlsx(xlsxFile = "D:/Application/21.R语言/test.xlsx", sheet=1)
head(data1)
2、使用xlsx包读取
xlsx包通过read.xlsx()函数读取Excel数据的。
# 先检查是否已安装了xlsx包,如果没有,则先安装
if (!require("openxlsx")) {
install.packages("openxlsx")
}
data1 <- xlsx::read.xlsx(File = "D:/Application/21.R语言/test.xlsx", sheetIndex=1, sheetName=NULL)
head(data1)
需要安装java,否则会报错。
3、使用readxl包读取
readxl包通过使用read_excel()函数读取Excel数据。
7个参数:
- path:字符型,Excel文件所在的路径和名称;
- sheet:字符型或整数型,需要读取的工作簿既可以是工作簿名称(字符串),也可以是工作簿的位置序号(正整数);
- range:字符型,读取指定区域的数据,如:B4:D88表示读取B4到D88的数据;
- col_names:逻辑型,判断是否使用第一行做为列的名称。
- col_type:字符向量或NULL,读取数据每一列的类型,包含skip(忽略),guess(基于被读取的Excel文件本身的单元格类型)、logical(逻辑型)、numeric(数值型)、date(日期型)、text(字符串型)、list(列表项)等;
- na:字符串,被读取的Excel文件对缺失值的约定。
- trim_ws:逻辑型,判断是否清楚数据末尾的空格。
# 先检查是否已安装了readxl包,如果没有,则先安装
if (!require("readxl")) {
install.packages("readxl")
}
data1 <- readxl::read_excel(path = "D:/Application/21.R语言/test.xlsx", sheet=1, range=NULL, col_names=T, col_type=NULL, na="", trim_ws=T)
head(data1)
三、读取数据库数据
暂无
四、读取其它统计工具的数据
1、读取SPSS软件数据
SPSS软件默认数据保存格式为*.sav,foreign包中的read.spss()函数和haven包中的read.sav()函数或read_spss()函数可读取此类数据。
以foreign包中自带的electric.sav数据集为示例:
read.spss()函数的4个关键参数:
- file:字符型,需要读取的*.sav文件路径;
- use.value.labels:逻辑型,在读取数据时判断是否将变量的标签值转换为R语言因子格式数据,如果变量中出现不满足标签值的数据,将强制转换为NA。
- to.data.frame:逻辑型,判断是否将数据转换为数据框,默认值为FALSE,即转换为列表。
- use.missings:逻辑型,判断是否将原有数据中定义的缺失值转换为NA,建议设置为TRUE。
library("foreign")
file <- system.file("files", "electric.sav", package="foreign")
data <- foreign::read.spss(file=file, use.value.labels=T, to.data.frame=T, use.missings=T)
head(data)
dim(data)
str(data)
以haven包读取electric.sav数据集:
read_sav()函数的参数:
- file:字符型,需要读取的*.sav文件路径与名称;
- encoding:字符型,数据文件的字符编码,一般默认为NULL,即使用与原数据文件相同的编码方式;
- user_n:逻辑型,判断是否将原有数据中定义的缺失值转换为NA。
library("haven")
file <- system.file("files", "electric.sav", package="foreign")
data <- haven::read_sav(file = file, encoding=NULL, user_na=T)
head(data)
dim(data)
str(data)
2、读取SAS软件数据
SAS软件数据集存储于逻辑库中,默认数据保存格式为*.sas7bdat。
通过foreign包的read.ssd()函数和haven包的read_sas()函数读取。
foreign包中的read.ssd()函数读取:
注意:read.ssd()函数读取SAS数据集的前提是本地要安装SAS软件。
read.ssd()函数的参数:
- libname:字符型,逻辑库名称,相当于SAS数据集存储的文件夹名称。
- sectionnames:字符型,数据集名称,注意,只需要给出数据名称,不需要添加文件后缀。
- sascmd:字符型,SAS软件可执行程序安装的路径。
data <- foreign::read.ssd(libname = system.file("examples", package="haven"),sectionnames="iris", sascmd = "D:/Program Fils/SASHome/SASFoundation/9.4/sas.exe")
head(data)
dim(data)
str(data)
haven包中的read_sas()函数读取:
read_sas()函数的主要参数:
- data_file:字符型,需要读取的文件路径;
- encoding:字符型,数据文件的字符编码,默认为NULL,即使用与原数据文件相同的编码方式;
- col_select:字符串,需要读取数据列的列名称,默认为NULL,即读取全部列。
file <- system.file("examples", "iris.sas7bdat", package = "haven")
data <- haven::read_sas(data_file = file, encoding = NULL, col_select = NULL)
head(data)
dim(data)
str(data)
3、读取Stata软件数据
Stata软件数据格式是*.dta。
通过foreign包的read.dta()函数和haven包的read_dta()函数读取。
foreign包的read.dta()函数:
read.dta()函数仅支持读取Stata5到Stata12版本的数据,不支持更高级的版本。
file <- system.file("examples", "iris.dta", package="haven")
data <- foreign::read.dta(file=file, convert.dates=T,convert.factors=T)
head(data)
dim(data)
str(data)
提示版本错误:
haven包的read_dta()函数:
此函数对Stata软件版本没有要求。
file <- system.file("examples", "iris.dta", package="haven")
data <- haven::read_dta(file=file, encoding=NULL)
head(data)
dim(data)
str(data)