2016-12-08 6 views
0

"Day"、 "Tree"、 "Trt"、 "LogColumn"という列を持つデータセット( 'gala')があります。データは時間とともに収集されたので、各番号付きツリーは、各処理ごとに同じツリーがすべての日にわたって同じであるようになっています。ツリー番号は、各処理ごとに繰り返される(例えば、複数の処理に対してツリー「1」がある)。Rでは、複数の列でグループ化されたデータのサブセットの平均と標準誤差を計算し、これを新しいデータフレームに出力するにはどうすればよいですか?

私は毎日の治療ごとに各ツリーの 'LogColumn'列の平均と標準誤差を計算したいと思います(例えば、1日目、ツリー1、治療x、オリジナルの日、ツリー、Trt値も含む新しいデータフレームに平均および標準誤差結果を出力する。

私は失敗し、他のスタックオーバーフローの答えからコードのフランケンシュタインをしようとしてきたが、私は一度にすべてのコンポーネントを持っているものを見つけるように見えることはできません。私がこれを逃した場合、私は申し訳ありません、この答えへのリンクで私に知らせてください。私はコーディングの初心者であり、Rであり、私がしたいことに直接関係しない他のコードをどのように適用できるかをよく理解していません。この時点で

、私は(「『閉鎖』はsubsettableないタイプのオブジェクト」私も現在、エラーメッセージを取得しています)、これを持っているが、それはどこでも正しいの近くにあるかどうかを知りません: TreeAverages <- data.table[, MeanLog=mean(gala$LogColumn), se=std.error(gala$LogColumn), by=c("Day","Tree","Trt")]

どんな助けでも大歓迎です。ありがとうございました!

+3

あなたが再現可能な例 http://stackoverflow.com/questions/5963269/how-to-make-aを提供する必要があります-great-r-reproducible-example – aelwan

答えて

4

あなたがdata.tableを使用している場合は、最初のdata.tableオブジェクトにガラを変換することを忘れないでください。

gala = data.table(gala) 

gala_output = gala[, .("MeanLog" = mean(LogColumn), 
     "std" = std.error(LogColumn)), 
    by = c("Day", "Tree", "Trt")] 

あなたは本当に近いですが、data.tableはdplyrと同じように動作しますので、すでに変数名が分かっています。あなたはどこにでも$ LogColumnを特定する必要はありません。ちょうど名前を付けてください。

。()はlist()の略語なので、data.tableがDay、Tree、Trtでグループ化されたMeanLogとstd列を返すように指定しています。ベースR aggregateを使用して

library(dplyr) 
df <- gala %>% 
    group_by(Day, Tree, Trt) %>% 
    summarise(mean = mean(LogColumn), 
      std = sd(LogColumn)) 
1

aggregate(LogColumn ~ Day + Tree + Trt, data = gala, 
      FUN = function(x) c(mean = mean(x), se = std.error(x))) 
関連する問題