R 行和列中维度的聚合/求和
我知道标准聚合函数,示例代码R 行和列中维度的聚合/求和,r,sum,aggregate,R,Sum,Aggregate,我知道标准聚合函数,示例代码 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 3
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中如何做到这一点?这是一个
数据表。表答案:
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
尝试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)
xtabs(hp~cyl+vs,res)
#vs
#01团
# 4 91 818
# 6 395 461
# 8 2929 0
res您可以直接在mtcars
数据上使用xtabs()
,而无需使用aggregate()
作为中间步骤:
xtabs(hp ~ cyl + vs, data = mtcars)
我不理解您预期输出中的标签hp
。vs
级别为0
和1