第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”…)。
## 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()
函数。
## 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
变量。
## # 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
## # 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