Rの因子変数ごとに自動的に要約を作成する


11

私は次のようなデータフレームを持っています:

   case simulation temp plank oxygen
1     1          1    8     7     11
2     2          1   16    10     15
...
17   17          2   26    12     17
18   18          2   15     8     12
19   19          2   28    11     21
20   20          2   24     6     14

シミュレーション変数のレベルで要約を分割したいのですが。たとえばtemp、simulation == 1とSimulation == 2 の平均と、標準偏差も同じです。

現在、私は次のコードを使用していますが、これはかなり恐ろしいことです。

df <- read.csv("data.csv")
attach(df)

# Create subset variables
temp1 = subset(temp, simulation==1)
temp2 = subset(temp, simulation==2)

plank1 = subset(plank, simulation==1)
plank2 = subset(plank, simulation==2)

oxygen1 = subset(oxygen, simulation==1)
oxygen2 = subset(oxygen, simulation==2)

print(sd(temp1))
print(sd(temp2))
print(sd(plank1))
print(sd(plank2))

これをRで自動的に行う方法があるはずですが、見つかりません。私はを使用してみましたsummary(df ~ simulation)が、それは有用なものを何も生成しません。

回答:


17

by()またはtapply()関数を確認してください。基本的に、

tapply(y, g, mean)

yレベルごとの平均値を示しますg。結果の集計メジャーからdata.frameを取得する場合は、を使用しますaggregate()

Hmiscパッケージのsummary.formula()関数を介して、より複雑なソリューションを利用できます。


3

パッケージにdoByは、summaryByあなたが試したような式ベースの構文を持つ関数があります。

また、私はその質問がstackexchangeでよりよく尋ねられたであろうと思います。


ありがとう。パッケージを見てみます。これはstackexchangeですね。
robintw

1
fabianはStackoverflow:Rプログラミング用のstackoverflow.comを意味していたと思います。Rの質問でどうすればよいですか。この場所はより一般的に統計についてです。ただし、この2つはたくさんブレンドできます。
モニカの復活-G.シンプソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.