我的数据集看起来像这样但更大:
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")
我希望X1
和X2
拥有一个数据集,其中包含“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.1
,Group2
和x
。
如何让aggregate
以我在使用head(agdata)
时看到的格式为我提供数据集?
答案 0 :(得分:1)
您可以使用 reshape2 包中的 dcast 获取它:
library(reshape2)
dcast(data, X1+X2 ~ X3)