本章问题:CSV文件是如何导入进R?
CSV文件是以逗号分隔符的形式存储的文本文件,可使用read.table()从带分隔符的文本文件中导入数据,并将其保存为一个数据库。
表格的每一行分别出现在文件中每一行。其语法如下:
mydata<-read.table(file,options)
其中file是一个带分隔符的ASCII文本文件,options是控制如何处理数据的选项。
具体选项有以下(具体选项参数可查看相关文档):
header
sep
row.names
col.names
na.string
colClasses
quote
skip
stringAsFactors
text
范例:
研究背景:读取一个名为studentgrades.csv的文本文件,其中包含了StudentID、姓名、数学、科学、社会学习的分数。文件中每一行表示一个学生,第一行包含了变量名,用逗号隔开。每一个单独的行都包含了学生的信息,它们也是用逗号进行分割的。
数据如下:
StudentID,First,Last,Math,Science,Social Studies
011,Bob,Smith,90,80,67
012,Jane,Weary,75,,80
010,Dan,"Thronton,III",65,75,70
040,Mary,"O'Leary",90,95,92
代码如下:
grades<-read.table("C:/studentgrades.csv",header=TRUE,row.names="StudentID",sep=",")
结果如下:
观察结果可以看出:
①变量名Social Studies被自动地根据R的习惯重命名为Social.Studies了;
②列StudentID现在是行名,不再有标签,也失去了前置的0;
③Jane缺失的科学课成绩被正确地识别为缺失值NA;
④不得不在Dan的姓周围用引号包围住,从而能够避免Thornton和III之间的空格;
⑤O’Leary左右用引号包围住,否则R会把单引号读取为分隔符;
⑥最后,姓和名都被转化成因子。
拓展:
①如果不想姓和名转化为因子,可加入选项stringAsFactors=FALSE即可
②如果想自定义变量类型,可加入选项colClasses=c("character","character","character","numeric","numeric","numeric")
函数read.table()还有许多微调数据导入方式的追加选项,请参阅help(read.table)