我是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
答案 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