2017-01-09 10 views
0

私はRで本当に新しいです(今は1週間勉強しています)。さらにStack Overflowで新しいです。集計関数の使い方に疑問があります。 DOM $ pesoA私は を合計する必要がある唯一の値を持っています - - DOM $ codMun - DOMの$のtypeEsgは、1から6までの数字とも多くのNA があり :テーブルを集約した後にマトリックスを作成するR

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

:私は、次のコードをしようとしています

このデータフレーム(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'関数を 'reshape2'パッケージから呼び出すことで、印刷可能なバージョンを手に入れることができます。 "mtcars [、c(" mpg "、" cyl "、" wt ")]; reshape2 :: dcast(mtcars [、c(" mpg "、" cyl "、" wt ")]の行にある何かmpg 〜cyl、sum) 'である。これは、 '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 
関連する問題