本文是《R编程语言》中一个系列的第二部分。在第一部分中,我们探索如何使用R语言进行数据可视化。第二部分将探讨如何在R语言中获取数据并进行分析。
如今,想要购买一部 手机 已成为一件非常具有挑战性的事,这点很好理解。因为要在如此多的款型和品牌中选择并确定符合最终需求的那款 手机 , 需要进行深入的产品研究并理解产品的功能。有趣的是,一些产品评论和价格比较,可供用户自由填写和选择,以帮助消费者作出正确的选择。而实际积累的数据也 为消费者对产品决策和最终决定是否购买方面也起了重要作用。作为消费者,寻找合适的数据是一个十分复杂的过程。这样一来,R语言就有了用武之地。使用R语 言进行编程,开发者可以用一个脚本快速绘制统计出适合自己的分析。下面,让我们看看R编程的一些特性和用法。
R可以从以下几个方面读取数据:
·电子数据表
·Excel表
·数据库
·图片
·文本文件
·其他特殊格式
不论是本地数据还是网上数据,使用R编程都将能够成功地导入不同格式的数据。
理想情况下,数据是可以储存在文件系统中的。这些数据必须可读或写,用以识别当前目录中储存的文件。
首当其冲的就是设置工作目录。
使用命令getwd()来确定目录(文件夹)
在linux pc输出显示的路径如下:
> getwd()
[1] "/home/test"
在Windows上描述为:
c:/data/test
设置数据文件的保存目录,使用命令setwd(“路径”),路径数据文件所在的目录和子目录。例如,如果数据在文件temp.txt且此文件在文件夹/home/test/example/,那么在linux上表示为:
setwd("/home/test/example/")
在Windows上,它将被表示为:
setwd("C: /mydata/test")
这里,有必要知道文件所保存的文件夹地址。
包含在文本文件的数据可以在R会话时使用扫描命令读取。
记住使用选项what= " "扫描命令,这表明输入的字符将带有数据类型属性。
对于这个session,我已经创建了textsample.txtfile文件,它可以在R会话中读取。
> fdata<- scan("textsample.txt",what="")
现在,fdata将从文本文件中获取数据。
让我们先来回顾一些head(fdata)条目命令:
> head(fdata)
[1] "this" "is" "a" "sample" "file" "generated"
使用tolower将字符串转换成小写字母。
> fdata<-tolower(fdata)
文件中许多都是单独存储,其中存在一些重复词汇。
计算词的使用频率
> ft<-table(fdata)
查看ft的饼图情况使用命令:
> pie(ft)
从上面的图表可以看出,“file”和“the”的使用频率最高。
通过max命令可以很容易发现在英国《金融时报》使用频率最大的单词。
> max(ft)
[1] 4
查看该命令的输出:
> head(ft)
fdata
a be by can character command
1 3 1 2 1 1
图中点绘处显示单词在频率图对应的位置:
> dotchart(ft)
大家都知道,一些最常见的数据文件都是csv和xls格式文件。csv文件用逗号分隔值,xls是一个excel文件扩展名。
一些最常见的数据文件格式,可以通过read.csv和read.table命令处理:
> read.csv("test.csv",header=TRUE)
1 Status Age V1 V2 V3 V4
2 P 23646 45190 50333 55166 56271
3 CC 26174 35535 38227 37911 41184
4 CC 27723 25691 25712 26144 26398
5 CC 27193 30949 29693 29754 30772
6 CC 24370 50542 51966 54341 54273
7 CC 28359 58591 58803 59435 61292
8 CC 25136 45801 45389 47197 47126
> read.table("test.csv",header=TRUE)
Status Age V1 V2 V3 V4
1 P 23646 45190 50333 55166 56271
2 CC 26174 35535 38227 37911 41184
3 CC 27723 25691 25712 26144 26398
4 CC 27193 30949 29693 29754 30772
5 CC 24370 50542 51966 54341 54273
6 CC 28359 58591 58803 59435 61292
7 CC 25136 45801 45389 47197 47126
大家可以直接从网上读取数据。这些数据可通过网站链接获取,或通过R记忆URL直接获得数据。网络上的数据设置可登录http://lib.statNaNu.edu/datasets/csb/ch3a.dat。输入read.csv或read.table命令直接读取数据。
data1<-read.table( "http://lib.statNaNu.edu/datasets/csb/ch3a.dat")
> head(data1)
V1 V2 V3 V4 V5
1 07/08/91 47.33 52.82 19.58 17.78
2 07/09/91 42.58 53.25 9.42 6.06
3 07/10/91 59.55 56.32 19.83 14.81
4 07/11/91 52.92 50.06 15.08 9.75
5 07/12/91 55.25 59.50 28.75 27.21
6 07/13/91 54.75 56.80 27.83 20.84
data2<-read.csv( "http://lib.statNaNu.edu/datasets/csb/ch3a.dat")
> head(data2)
X07.08.91....47.33....52.82....19.58....17.78
1 07/09/91 42.58 53.25 9.42 6.06
2 07/10/91 59.55 56.32 19.83 14.81
3 07/11/91 52.92 50.06 15.08 9.75
4 07/12/91 55.25 59.50 28.75 27.21
5 07/13/91 54.75 56.80 27.83 20.84
6 07/14/91 35.33 40.88 11.83 15.65
data1以及data2是持有相同的文件不同格式的两个数据对象。
Reading Spreadsheets
阅读电子表格数据,我们需要安装gdata库。
> install.packages("gdata")
> library(gdata)
读取这个包的数据,可使用新命令read.xls。
The data file test.xls can be read with read.xls(“test.xls”).
数据文件test.xls可输入命令read.xls xls(“test.xls”)读取。
Fill Spread Sheet Type Data Through the Editor in R
x<-edit(as.data.frame(NULL))
可以使用显示R中的数据集的命令data()将可用数据集置入R中。
data(Airpassengers)
查看数据描述,使用命令:
help(AirPassengers)
查看实际数据,使用head命令:
> head(AirPassengers)