在R中聚合表后创建矩阵

时间:2017-01-09 22:13:51

标签: r matrix aggregate

我是R的新手(我现在已经学习了一周),甚至更新的Stack Overflow。我对如何使用聚合函数有疑问。我正在尝试以下代码:

a = aggregate(dom$pesoA, 
               by = list(tipoE = addNA(dom$typeEsg), mun =dom$codMun), 
               FUN = sum, 
               na.rm=FALSE)

其中: - dom $ pesoA只有我需要求和的值 - dom $ typeEsg的数字从1到6,还有很多NA - dom $ codMun有市政代码(没有NAs)

我可以将这个数据框(a)转换为一个矩阵,其中tipoE是列,mun是行,dom $ pesoA的总和值是我的矩阵的元素(mun和tipoE有一些缺失的组合) ?

我不知道你是否能理解我的解释,如果你有任何问题我会尽力回答。

This is what my a df looks like

提前致谢

TR

1 个答案:

答案 0 :(得分:2)

如果您的数据框确实如此,那么您的列名和代码之间就会出现严重的不匹配。

dom <- data.frame(tipoE=sample(c(letters[1:4],NA), 30, rep=TRUE),
mun=rep(c(3200102,3200106,3200310) , each=10),
x=runif(30, 100,200) )
dom

这次改造成功了:

a = aggregate(dom$x, 
               by = list(tipoE = addNA(dom$tipoE), mun =dom$
               FUN = sum)
a

然后xtabs的使用会提出您的请求:

> aT <- xtabs( x ~ tipoE + mun, a)
> aT
      mun
tipoE   3200102  3200106  3200310
  a    340.7700 367.1412 180.0594
  b    280.9851 485.8780 798.4880
  c    280.7682 236.3637 165.2295
  d    176.6967 125.0732 132.5339
  <NA> 376.4278 117.1063 251.2514