数据框(data frame)是R最常见的数据集(data sets)存储方法,由多列数据构成,每列代表一个变量的测量。数据框可以被看作没有排名称、只有列名称的矩阵。数据框的构建使用函数data.frame,将不同向量组合在一起。例如:
>group<-gl(3,10,labels=c('grp1','grp2','grp3'))
>DV<-c(11,10,10,9,8,8,12,10,10,10,9,10,9,11,8,9,10,10,11,11,6,13,7,6,10,8,6,7,8,5)
>Data<-data.frame(group,DV)
>Data[1:5,]
group DV
1 grp1 11
2 grp1 10
3 grp1 10
4 grp1 9
5 grp1 8
因为这个例子包括的数值较多,输出结果只显示前5排,grp1前面的数字(1,2,…)表示个案(cases)顺序。[1:5,]表示提取所有列的前5排数据。如果只提取第二列的前5排数据,则R命令为Data[1:5,2]。R输出结果为:
>Data[1:5,2]
[1]11 10 10 9 8
提取某个R变量数据还可以使用操作符“ ”。譬如,提取Data数据框中DV的所有数据,输入命令Data$DV,得到:
>Data$DV
[1]11 10 10 9 8 8 12 10 10 10 9 10 9 11 8 9 10 10 11 11 6 13 7 6
[25]10 8 6 7 8 5
如果要提取符合某个条件的数值,可以并用操作符“$”与关系操作符(如“>”)。譬如,提取Data数据框中DV值大于10的所有数据,则输入R命令Data$DV[Data$DV>10]即可:
>Data$DV[Data$DV>10]
[1]11 12 11 11 11 13
要了解数据框中数据的排数和列数,可以用函数nrow和ncol。例如:
>nrow(Data);ncol(Data)
[1]30
[1]2
我们也可以使用函数dim显示数据框的维度(dimension)。例如:
>dim(Data)
[1]30 2
如果使用函数str,则R返还数据存储方式、变量数、观测值数和部分数值。例如:
>str(Data)
:30 obs.of 2 variables:
$ group:Factor w/3 levels'grp1','grp2',…:1 1 1 1 1 1 1 1 1 1 …
$ DV :num 11 10 10 9 8 8 12 10 10 10 …
列表(lists)是数据存储的另外一种重要方法,在本书中主要用于稳健(robust)统计的数据处理。列表数据存储的函数为list,可以将多个对象(objects)合并在一个对象名下。譬如,下面的R输出显示三组数据置于同一个对象Group之下:
>grp1<-c(1,3,7,9,11,15,8,9,12)
>grp2<-c(4,3,5,6,7,8,11,10,9)
>grp3<-c(2,4,3,3,3,6,7,9,12,9,10)
>Group<-list()
>Group[[1]]<-grp1
>Group[[2]]<-grp2
>Group[[3]]<-grp3
>Group
[[1]]
[1]1 3 7 9 11 15 8 9 12
[[2]]
[1]4 3 5 6 7 8 11 10 9
[[3]]
[1]2 4 3 3 3 6 7 9 12 9 10
对于列表数据的数学运算可以利用函数lapply。譬如,lapply对列表Group中每个列表数值平均数的计算结果如下:
>lapply(Group,FUN=mean)# FUN can be dropped
[[1]]
[1]8.333333
[[2]]
[1]7
[[3]]
[1]6.181818