本节书摘来异步社区《R数据可视化手册》一书中的第1章,第1.3节,作者:【美】Winston Chang,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.3 加载分隔符式的文本文件
问题
如何加载一个分隔符式的文本文件中的数据?
方法
加载逗号分隔组(CSV)数据的最常用方法是:
data <-read.csv("datafile.csv")```
讨论
由于数据文件有许多不同的格式,为了加载它们,提供了很多对应的选项。如果一个数据集首行没有列名:
data <-read.csv("datafile.csv", header=FALSE)`
得到的数据框的列名将是V1、V2等,你可能想要重命名列:
#手动为列名赋值
names(data) <-c("Column1","Column2","Column3")```
还可以用sep参数来设置分隔符号。如果是空格分隔,使用sep=" ";如果是制表符分隔,使用\t。
data <-read.csv("datafile.csv", sep="t")`
默认情况下,数据集中的字符串(string)会被视为因子(factor)处理。假设下面是你的数据文件,然后,你用read.csv()来读取:
"First","Last","Sex","Number"
"Currer","Bell","F",2
"Dr.","Seuss","M",49
"","Student",NA,21```
得到的数据框将会把First、Last等存储为因子,尽管此时将它们视为字符串(或使用R中的术语,字符:character)更为合理。为了区别这一点,可以设置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。