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)
?