R,aggregate()使用table()作为函数

时间:2014-05-23 11:08:33

标签: r

我的数据集看起来像这样但更大:

data <- data.frame(cbind(c(1,1,1,1,1,1,2,2,2),
                         c(1,1,1,2,2,2,1,1,1),
                         c(1,2,2,2,3,3,1,2,1)))
data$X3<-factor(data$X3)
levels(data$X3)<-c("House","Barn","Pigsty")

我希望X1X2拥有一个数据集,其中包含“House”,“Barn”和“Pigsty”。想象一下,X和Y是坐标,我想要计算每个坐标上每种类型建筑物的数量。

我在做:

agdata <- aggregate(data[,"X3"],by=list(data[,"X1"],data[,"X2"]),FUN=table)

如果我要求使用agdata打印head(agdata),则会显示每个级别X3的两个坐标和三个计数变量:

  > head(agdata)
     Group.1 Group.2  x.House  x.Barn   x.Pigsty

   1       1       1       1      2        0    
   2       2       1       2      1        0    
   3       1       2       0      1        2

但是,如果我使用View(agdata),我只会看到三个变量Group.1Group2x

如何让aggregate以我在使用head(agdata)时看到的格式为我提供数据集?

1 个答案:

答案 0 :(得分:1)

您可以使用 reshape2 包中的 dcast 获取它:

library(reshape2)
dcast(data, X1+X2 ~ X3)