2017-05-10 10 views
0

私は異なる時間に異なる群の平均とSDを計算するRに集約関数を使用ポイントR:集計関数の作るプロット

aggregate(.~ Group + Time, data = x, FUN = function(x) c(m = mean(x), n = sd(x))) 

私はこれがまた私に平均とSDを与えること、疑問を持っていますデータのIDのために、私の結果は次のようになりますので、:

# Time Group ID.m ID.n result.m result.n 
# 1 0 x  20.5 10.0  6.5 1.15 
# 2 1 x  20.5 10.0  8.0 2.13 
# 3 0 y  20.5 10.0  7.0 2.66 
... 

どのように私はIDの平均とSDを削除することができ、また、私は平均のプロットを作成し、グループごとに-sd +を意味したいと思います異なる時間(x軸としての時間)で、私はこれをどのようにすることができますか?

+1

に含まれているggplot2を使用することができます一般的には、(集計 'のようになります。〜CYL、mtcars、機能(x)は{C(平均=平均(x)は、SD = SD(X)) }) '、しかし、ある時点でこれは制限th dplyrやdata.tableに人を送り込む。 – alistaire

+0

結果IDを削除するにはどうすればいいですか?@alistaire – Cindy

+0

数式の左側には含めないでください。元のデータを見ることなく、言い表すのは難しいです。これは、[あなたの例を再現可能にする](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example# 5963610)。 – alistaire

答えて

1

tidyrパッケージの使用を検討してください。これは、tidyverseライブラリをロードするときに含まれます。 group_by関数とsummarize関数は、集計関数を置き換えます。私の意見では、パイプ機能(%>%)が読みやすいです:

# Libraries 
library(tidyverse) 

result_table <- mydata %>%  # Specify your table 
    group_by(Group, Time) %>%  # Specify your groups (two variables in your case) 
    summarize(m = mean(x),   # Calculate mean for your groups 
      n = sd(x))   # Calcualte sd for your groups 

あなたがしたいすべてがあなたの結果から列を削除している場合:

result_table %>% select(Time, Group, result.n, result.m) # using tidyr or 
result_table[,c('Time', 'Group', 'result.n', 'result.m')] # Base R 

あなたのプロットを作成するには、あなたをまたtidyverse

ggplot(data = result_table) + 
    geom_line(aes(time,m)) + 
    geom_line(aes(time,n))