1

こんにちは、おそらく非常に単純な問題がありますが、理解できません。ddply を使用して、ggplot2 で使用するデータフレームを作成しています。

切り捨てられた私のデータは次のとおりです。

Subject Group   Day gkg Strain
PE4 E   1   0.829556075 P
PE5 E   1   0.871823204 P
PE6 E   1   1.135461255 P
PS4 S   1   3.316062176 P
PS5 S   1   2.61627907  P
PS6 S   1   3.286004057 P
WE4 E   1   0.154101563 W
WE6 E   1   1.317852495 W
WS4 S   1   2.007434944 W
WS5 S   1   1.28        W
PE4 E   2   0.642209302 P
PE5 E   2   0.502644788 P
PE6 E   2   1.319834559 P
PS4 S   2   3.350515464 P
PS5 S   2   2.994241843 P
PS6 S   2   3.507014028 P
WE4 E   2   0.109366337 W
WE5 E   2   0.493125    W
WE6 E   2   0.721960784 W
WS4 S   2   2.542056075 W
WS5 S   2   1.23752495  W

グループ E または S に基づいて、このデータのサブセットを作成しました

Edata = which(data$Group == "E")
e = data[Edata,]
Sdata = which(data$Group == "S")
s= data[Sdata,]

次に、ddplyを使用して、平均、標準偏差、平均の標準誤差を含むデータフレームを作成しようとしました

newdataIntakeEGKG = ddply(e, .(e$Strain, e$Day), summarise,
    N = sum(!is.na(e$gkg)),
    mean = mean(e$gkg, na.rm = TRUE),
    sd = sd(e$gkg, na.rm = TRUE),
    se = sd(e$gkg, na.rm = TRUE)/sqrt(sum(!is.na(e$gkg))))

これにより、次の出力が生成されます。

e$Strain e$Day  N     mean        sd         se
1         P     1 60 0.630856 0.3593886 0.04639687
2         P     2 60 0.630856 0.3593886 0.04639687
3         P     3 60 0.630856 0.3593886 0.04639687
4         P     4 60 0.630856 0.3593886 0.04639687
5        W     1 60 0.630856 0.3593886 0.04639687
6        W     2 60 0.630856 0.3593886 0.04639687
7        W     3 60 0.630856 0.3593886 0.04639687
8        W     4 60 0.630856 0.3593886 0.04639687

私が手で計算したとき、私はそれが両方のひずみの平均を取ることを学びました. どこで私は間違えましたか?

4

1 に答える 1

1

e$ddply 呼び出しにすべてを含める必要はありません。これが機能するかどうかを確認してください。

ddply(e, .(Strain, Day), summarise,
      N=sum(!is.na(gkg)),
      mean=mean(gkg, na.rm=TRUE),
      sd=sd(gkg, na.rm=TRUE),
      se=sd(gkg, na.rm=TRUE)/sqrt(sum(!is.na(gkg))))

必ずしも同じ結果が得られるとは限りませんが、わずかにクリーンな代替手段です。

ddply(na.omit(e), .(Strain, Day), summarise,
      N=length(gkg), mean=mean(gkg), sd=sd(gkg), se=sd(gkg)/length(gkg))
于 2013-08-06T16:25:51.063 に答える