我知道标准聚合函数,示例代码
aggregate(hp~cyl/vs, data=mtcars, FUN="sum", na.rm=TRUE)
返回:
cyl vs hp
1 4 0 91
2 6 0 395
3 8 0 2929
4 4 1 818
5 6 1 461
但是我想把" vs"在列中,像这样:
vs 0 1
cyl hp hp
1 4 91 818
2 6 395 461
3 8 2929
如何在R?
中完成答案 0 :(得分:1)
以下是data.table
答案:
mt = as.data.table(mtcars)
dcast.data.table(mt, cyl ~ vs, value.var="hp", fun.agg = sum)
# cyl 0 1
# 1: 4 91 818
# 2: 6 395 461
# 3: 8 2929 0
答案 1 :(得分:1)
尝试xtabs
xtabs(hp~cyl+vs, res)
# vs
#cyl 0 1
# 4 91 818
# 6 395 461
# 8 2929 0
res <- aggregate(hp~cyl/vs, data=mtcars, FUN=sum, na.rm=TRUE)
答案 2 :(得分:1)
您可以直接在xtabs()
数据上使用mtcars
,而无需使用aggregate()
作为中间步骤:
xtabs(hp ~ cyl + vs, data = mtcars)