2017-01-09 67 views
0

R我真的很新(我已經學習了一個星期了),甚至在堆棧溢出時更新。我對如何使用聚合函數有疑問。我想下面的代碼:在R中創建表格後創建矩陣

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

其中: - DOM $ pesoA只有我需要總結 值 - DOM $ typeEsg有從1到6也有許多來港 號碼 - DOM $ codMun有沒有自治市的代碼

我可以將這個數據框(a)轉換成矩陣,其中tipoE是列,mun是行,並且dom $ pesoA的總和值是我矩陣的元素(有mun和tipoE的一些缺失組合)?

我不知道你是否能理解我的解釋,如果你有任何問題,我會盡力回答。

This is what my a df looks like

在此先感謝

TR

+1

請提供可重複的例子;考慮製作一個小的假數據集。 –

+1

歡迎來到StackOverflow!如果你提供了一個我們可以剪切並粘貼到R進行測試的版本,而不是你的數據的圖像,它會更有幫助。我發現你的data.frame很大,但是一個樣本很好。你可以通過輸入'dput(dom [1:15],])' – G5W

+0

''''''''''''dcast''''''''''''''' mtcars [,c(「mpg」,「cyl」,「wt」)]; reshape2 :: dcast(mtcars [,c(「mpg」,「cyl」,「wt」)],mpg 〜CYL,總和)'。這總結了'mpg'和'cyl'各種組合的'wt'列。 – OdeToMyFiddle

回答

1

如果你的數據幀確實看起來像那麼有列名和你的代碼之間嚴重不匹配。

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