2

私の問題に関するサンプルデータを次に示します。

mydf <- data.frame(A = rnorm(20, 1, 5),
                   B = rnorm(20, 2, 5),
                   C = rnorm(20, 3, 5),
                   D = rnorm(20, 4, 5),
                   E = rnorm(20, 5, 5))

ここで、data.frame の各列で 1 サンプル t 検定を実行して、のようにゼロと有意に異なるかどうかを証明し、t.test(mydf$A)各列の平均値、t 値、および p を保存します。 -新しい data.frame の値。したがって、結果は次のようになります。

      A    B    C    D    E
mean  x    x    x    x    x
t     x    x    x    x    x
p     x    x    x    x    x

mydfをループし、パラメータを計算してから、新しい data.frame をループして値を挿入するなど、これを行うための面倒な方法をいくつか思い付くことができます。
しかし、手元にあるようなパッケージplyrでは、これを行うためのより簡潔でエレガントな方法があるはずではありませんか?

どんなアイデアでも大歓迎です。

4

2 に答える 2

3

このようなことを試して、結果のテーブルから必要な結果を抽出します。

results <- lapply(mydf, t.test)
resultsmatrix <- do.call(cbind, results)
resultsmatrix[c("statistic","estimate","p.value"),]

あなたにあげる:

          A         B          C            D           E           
statistic 1.401338  2.762266   5.406704     3.409422    5.024222    
estimate  1.677863  2.936304   5.418812     4.231458    5.577681    
p.value   0.1772363 0.01240057 3.231568e-05 0.002941106 7.531614e-05
于 2013-06-29T20:24:07.163 に答える