2016-04-23 5 views
-1

は、私がB==qですべての行を選択し、Cの対応する平均値を計算してのはA==zを言わせて、追加の行として追加したいのは、私はdata.framedplyrのような行操作

A B C 
x q 4 
x p 2 
y q 0 
y p 8 

を持っているとしましょうB==oおよびCについては、ちょうどcaluclated平均。

これは基本的に、dplyrが列で行うが、行に適用するものです。私の質問はこうです:行の列の代わりにdplyr演算を適用する方法はありますか?もちろん、行操作のためのdplyrのようなパッケージであっても良いでしょう。

(私の実際のdata.frameは、より多くの行と列の当然で構成)

敬具

+0

これに基づいて期待される出力を表示できますかnput? – Heroka

+0

ここでは、行ごとの操作は説明に従って行っていません。 「C」の平均は、ちょうど法線ベクトル平均である。グループ単位でこれを行う場合は、 'group_by'を参照してください。特定のサブセットが必要な場合は、 'filter'を参照してください。最終的に 'rbind'や' bind_rows'が必要になるでしょう。 –

+0

つまり、このrbind(df、data.frame(A = 'z'、B = 'o'、C =平均(df $ C [df $ B == 'q'])) '? – Sotos

答えて

0

次のように使用してこれdplyrを行う方法は次のとおりです。

df <- read.table(header = TRUE, 
text = "A B C 
    x q 4 
    x p 2 
    y q 0 
    y p 8") 

library(dplyr) 

df %>% bind_rows(df %>% 
       filter(B=="q") %>% 
       summarize(C = mean(C)) %>% 
       mutate(A = "z", B = "o") 
      ) 
+0

完璧!まさに私が探していたもの。ありがとう! –

0

私はdplyrでfunction group_byと要約関数を使用するといいでしょう

df %>% group_by (B) %>% group_by(A) %>% summaries(mean(C)) 
関連する問題