R语言作为数据分析数据挖掘的利器,第一步要解决的便是如何高效地把数据导入进来。
输入数据挺方便,但当数据量比较大的时候,通过在命令窗口中逐一将数据录入的方法(R语言学习之输入的输入与调用(1))看似是效率低下的,那么,当我已经有了比较大规模的数据,如何导入到R语言中呢?
这里分享两种不错的方法:
从csv文件导入
csv是一个标准格式的,以逗号分隔数据的数据“中转格式”,非常适合将数据导入到R中。基本的步骤就是:在Excel编辑数据>另存为csv格式>在R语言中导入
做一个实例,在excel中做这样的表格,然后另存为aa.csv到工作目录。
data1 <- read.table("aa.csv",header=TRUE,sep=",")
data1
id x y
1 1 5 6
2 2 8 8
3 3 6 7
4 4 3 5
5 5 5 1
6 6 7 3
7 7 4 8
8 8 1 7
9 9 2 4
10 10 9 5
已经可以成功地把数据导入进来了,注意这个命令有相当多的参数设置,全部参数可以通过help(read.table)查看。
file:文件名或包含文件名的路径,默认文件的位置在工作目录里,记得file两侧要带上双引号哦。文件的绝对路径,一定要是这样的:C:\\desktop\\aa.csv,否则R语言不认识的。为了避免路径输入错误,可以用file.choose()函数代替,这样会弹出一个对话框,指定文件
header:TRUE或者FALSE,表明首行是否带有变量名。一个简单的判断依据是:只有当header=TRUE时,导入进来的第一行数据数量才会=总的列数-1。
sep:分隔符,默认是空格,如果你有含有空字段的制表符分割的文件,一定要使用 sep="\t"
quote:有时候字符串中包含引号,quote可以设置R把什么字符当做是引号,默认是双引号
dec:小数点格式,默认是“.”,不过有些国家是把逗号当做逗点来用的
numerals:如果数据中的小数点位数太多,多于双精度的要求时,用这个参数控制精度损失,numerals可以=allow.loss、warn.loss、warn.loss
row.names:设置行名称,可以设置成字符,也可以设置成数字,用以制定行名称在第几列
col.names:设置列名称,默认是V1、V2、V3……
as.is:设置每列的数据类型
还有,如果数据中含有空白字符,则可以用 fill = TRUE来排除字符尾部的空白,用strip.white = TRUE来去掉字符中间的空白。
从Excel文件导入
读取Excel文件最好的方式,就是上述的读取csv
理由有几点:
1.R语言直接读取Excel文件需要额外的插件
install.packages("RODBC")
运行上面这段命令,安装读取office文件的RODBC包
2.读取的命令比较复杂,不容易记忆
3.用ODBC读取Excel的命令,只能用于32位系统中,这个尴尬了,我是64位win8.1,看来是连做个例子试试看的机会都木有了。
不过呢,感谢MiltonDeng提供的总结:http://blog.sina.com.cn/s/blog_6f194ed30101blpy.html
在R里连接ODBC要用到RODBC这个包:
library(RODBC)
然后
conn <- odbcConnectAccess2007(access.file="D:/Data/data.accdb",uid="test",pwd="test")
industries <- sqlQuery(channel=conn,query="SELECT DISTINCT Indcd FROM Company")[[1]]
创建一个通道conn连接到Access2007文件data.accdb。然后用sql索引语言选取数据。
sqlQuery(channel,query),第一个参数为通道名(此处为刚才创建的conn);query为索引语句,索引语法为sql语言,其中SELECT DISTINCT 列名称 FROM 表名称,即选取出表Company中Indcd列中所有非重复值。
不过这里一开始我遇到了一点问题,以64bit的R运行时,一直会提示:
Warning messages:
1: In odbcDriverConnect(con, ...) :
[RODBC] ERROR: state IM002, code 0, message [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
2: In odbcDriverConnect(con, ...) : ODBC connection failed
并且64bit管理数据源ODBC时Access源也会出现加载问题。最后用32bit运行不会出现这个问题,具体原因不太清楚,如果有类似问题的话,直接用32bit的R运行就可以了。在控制面板->管理工具->数据源中可以直接修改64bit的ODBC配置。
64bit系统中32bit的ODBC通常会配置好Access的源。64位系统中修改32bit的ODBC的路径在C:\Windows\SysWOW64\odbcad32.exe。
看来,只有在处理海量数据,不得不使用数据库的时候,才会用到RODBC,待我用到的时候再写写笔记。
暂无评论