Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 行和列中维度的聚合/求和_R_Sum_Aggregate - Fatal编程技术网

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