- R数据可视化手册(第2版)
- (美)温斯顿·常
- 198字
- 2025-04-05 09:52:08
1.4 加载以符号分隔的文本文件
问题
如何加载一个以符号分隔的文本文件中的数据?
方法
读取文件中逗号分隔组(Comma-Separated Value,CSV)数据的最常用方法是:
data <- read.csv("datafile.csv")
另一种方法是使用readr包中的read_csv()
函数(注意是下划线而不是点)。这个函数的运行速度明显比read.csv()
函数快很多,并且更适合处理字符串、日期和时间。
讨论
由于数据文件有许多不同的格式,为了加载它们,提供了很多对应的选项。如果一个数据文件首行没有列名:
data <- read.csv("datafile.csv", header = FALSE)
那么得到的数据框的列名将是V1
、V2
等。想要手动重命名列:
# 手动为列名赋值
names(data) <- c("Column1", "Column2", "Column3")
可以用sep
参数来设置分隔符。如果是以空格分隔,使用参数sep = " "
。如果是以制表符分隔,sep
参数值应设置为\t
,如下所示:
data <- read.csv("datafile.csv", sep = "\t")
在默认情况下,数据中的字符串会被视为因子(factor)处理。假设下面是你的数据文件,然后,你用read.csv()
来读取:
"First","Last", "Sex", "Number"
"Currer","Bell","F",2
"Dr.","Seuss","M",49
"","Student",NA,21
得到的数据框将会把First
、Last
等存储为因子,尽管此时将它们视为字符串(或使用R术语中的字符向量)更为合理。为了区别这一点,可以设置stringsAsFactors = FALSE
。如果有些列应该被处理为因子,可以再对其逐个转换:
data <- read.csv("datafile.csv", stringsAsFactors = FALSE)
# 转为因子类型
data$Sex <- factor(data$Sex)
str(data)
#> 'data.frame': 3 obs. of 4 variables:
#> $ First : chr "Currer" "Dr." ""
#> $ Last : chr "Bell" "Seuss" "Student"
#> $ Sex : Factor w/ 2 levels "F","M": 1 2 NA
#> $ Number: int 2 49 21
还可以在加载的时候不做设置(字符串自动转换为因子),加载之后再对需要的列进行因子到字符串的转换。
另见
read.csv()
是对read.table()
更便捷的封装函数。如果需要更细致地操控文本输入,可以通过?read.table
命令获取更多细节。