R 用聚合保持零长群
我刚刚注意到聚合从结果中消失了空组,我如何解决这个问题?e、 gR 用聚合保持零长群,r,aggregate,R,Aggregate,我刚刚注意到聚合从结果中消失了空组,我如何解决这个问题?e、 g `xx <- c("a", "b", "d", "a", "d", "a") xx <- factor(xx, levels = c("a", "b", "c", "d")) y <- rnorm(60, 5, 1) z <- matrix(y, 6, 10) aggregate(z, by = list(groups = xx), sum)` `xx我们可以创建另一个数据框架,只使用'xx'的级
`xx <- c("a", "b", "d", "a", "d", "a")
xx <- factor(xx, levels = c("a", "b", "c", "d"))
y <- rnorm(60, 5, 1)
z <- matrix(y, 6, 10)
aggregate(z, by = list(groups = xx), sum)`
`xx我们可以创建另一个数据框架
,只使用'xx'的级别
,然后使用聚合
合并
。输出将包含所有“组”,而与其他列的缺失级别对应的行将为NA
merge(data.frame(groups=levels(xx)),
aggregate(z, by = list(groups = xx), sum), all.x=TRUE)
另一个选项可能是使用
melt
转换为“long”格式,然后使用dcast
和fun.aggregate
作为“sum”和drop=FALSE
library(data.table)
dcast(melt(data.table(groups=xx, z), id.var='groups'),
groups~variable, value.var='value', sum, drop=FALSE)
也许可以尝试使用(z,xx,colSums)作为聚合的替代方法。