第11章 数据导入

11.1 CSV文件读取

CSV(comma-separated values)文件是以.csv结尾的文件,文件中的数据以,分隔,每一行代表一条记录。如

读取csv文件或者以类似格式存储数据的txt文件时,可以使用read.csv()函数。

注意:在输入文件路径时,需要使用\\或者/

# 读取数据
wine_df <- read.csv("data/wine.csv") # 或者 read.csv("data\\wine.csv")

# 显示前5行记录
head(wine_df, 5)
##   X1 X14.23 X1.71 X2.43
## 1  1  13.20  1.78  2.14
## 2  1  13.16  2.36  2.67
## 3  1  14.37  1.95  2.50
## 4  1  13.24  2.59  2.87
## 5  1  14.20  1.76  2.45

在上例中可以看到,read.csv()默认将第一行记录读取为变量名。如果不将第一行读取为变量名 ,可以声明参数header=FALSE,这时,变量名将自动生成(“V1”,“V2”…)。

# 读取数据
wine_df <- read.csv("data/wine.csv", header=FALSE)

# 显示前5行记录
head(wine_df, 5)
##   V1    V2   V3   V4
## 1  1 14.23 1.71 2.43
## 2  1 13.20 1.78 2.14
## 3  1 13.16 2.36 2.67
## 4  1 14.37 1.95 2.50
## 5  1 13.24 2.59 2.87

有些文件中的数据会以,当做千位分隔符,数据以;分隔,这时可以用read.csv2()函数。

# 读取数据
revenue_df <- read.csv2("data/revenue.txt")

# 显示前5行记录
head(revenue_df, 5)
##   company revenue other_income
## 1       A  10.114        2.102
## 2       B  18.723        4.055
## 3       C  20.266        6.314
## 4       D  36.844        5.084
## 5       E  59.711        9.430

11.2 excel文件读取

excel文件的读取可以使用readxl包的read_excel()函数。此函数默认读取第一个工作表,如果需要读取特定工作表,可以声明sheet变量。

# 加载包
library(readxl)

# 读取数据
goods_df <- read_excel("data/goods.xlsx")

# 显示前5行记录
head(goods_df,5)
## # A tibble: 5 × 3
##   country     continent amount
##   <chr>       <chr>      <dbl>
## 1 Afghanistan Asia          11
## 2 Albania     Europe        30
## 3 Algeria     Africa        49
## 4 Andorra     Europe        55
## 5 Bahrain     Asia          20

读取一个excel文件中的多个工作表。

# 返回"goods.xlsx"工作表名称
sheets <- excel_sheets("data/goods.xlsx") 

# 读取每个工作表为数据框并返回列表
multi_df <- lapply(sheets, function(x){read_excel("data/goods.xlsx", sheet=x)}) 

# 给列表的元素命名
names(multi_df) <- sheets 

# 查看生成的列表长度(每个元素对应一个工作表)
length(multi_df) 
## [1] 5
# 显示Year2020工作表前5行记录
head(multi_df$Year2020,5) 
## # A tibble: 5 × 3
##   country     continent amount
##   <chr>       <chr>      <dbl>
## 1 Afghanistan Asia          11
## 2 Albania     Europe        30
## 3 Algeria     Africa        49
## 4 Andorra     Europe        55
## 5 Bahrain     Asia          20

11.3 文件读取汇总

文件类型 调用包 读取函数
CSV文件(*.csv) utils(R自带) read.csv()
TXT文件(*.txt) utils(R自带) read.csv()
excel文件(*.xlsx或*.xls) readxl read_excel()
SAS文件(*.sas7bdat) haven read.sas()
SPSS文件(*.sav) haven read.sav()
STATA文件(*.dta) haven read_dta()