上集回顾
上节学习了frame数据框架和list函数生成内容十分自由的列表。其中后者的使用非常频繁。
数据的载入
Excel中的数据载入
第一种方法:使用专门的程序包来访问Excel中选定的行和列:RODBC。
第二种方法(简单、推荐使用):
- 将Excel中的数据准备好(将数据排列好,删除冗余或者无意义产生的值)
- 将其提取到制表符分隔的ascii文件中(另存为制表符分隔的文本文件)
- 关闭Excel(防止文件被占用)
- 使用read.table函数将数据载入到R中(导入文件多的话可先用setwd来设置工作目录)
注意输入文件目录时要有俩"\"。
另外也可以使用scan函数来载入数据,不同之处在于:scan函数把数据存储在矩阵中,而read.table把数据存储在数据框。
注意:使用别的文本编辑器和表格可能有不同,有时候表头和列并没有在视觉上对齐!看起来就好像缺失一些列似的。本题目也产生了这样的问题:源excel文件如下:
进行简单处理,去除图标和"Graph"字段名,删除前两列信息后另存为制表符分隔的文本文档,如下:
可以看到,命名第一行有6个字段名,下面的数据却只有5列。我反复尝试并查资料,也没有找到解决方法。最终,我把这个tet文件又拉进excel才发现产生的表格没问题啊,该有的数据还是有,一度怀疑文本文档查看器把我的数据隐藏了起来。
然后,才突然发现上图选中的框那里,第一行前两个单词是一个字段!!中间竟然是空格?!回过头来看了RStudio中的错误信息也是这样:没有6个元素?哪来的6个,只有5列,看来R识别到第一个字段中的空格,然后当成了两个不同字段。
删掉这个空格,完美载入:
使用scan函数载入数据的时候注意:scan函数没有Header参数,所以载入时会不识别字符串,而希望输入的是默认的实数,所以要设置“what = ‘c’”参数来使得可以输入字符:
验证载入的数据的存储方式:
习题7:使用流行病学数据练习read.table函数或scan函数的应用
从其他统计程序包中访问数据 library(foreign)
最好的工作方法还是直接面对原始数据。可以把R中生成的数据信息提取到一些统计程序包中,具体参考write.foreign的参考文件。
访问数据库
使用特殊的程序包可以和Oracle和MySQL等数据库实现对接。这个实现起来需要一些技术和理解,这里不过多讲述。基本的数据导入方法已经掌握,目前没必要钻进这里耽误很多的时间,等后续需要的时候再学也不迟,且更快。
学习感悟:R语言真是一个专门搞数据处理的程序,一直都围绕着数据做文章。简单翻阅了后面的章节,也是对数据进行访问和处理。总之,学到这里算是对R有了一定的认识:对各种输入的数据进行操作,然后可视化出图形。真的很有效率,后面简单学过数据的处理和浏览一些函数的大概使用之后,就开始学习ggplot2包的使用,这才是重头戏!