Secara otomatis menghasilkan ringkasan dengan variabel faktor dalam R

11

Saya punya kerangka data seperti berikut:

   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

Saya ingin membagi ringkasan berdasarkan level dari variabel simulasi. Sebagai contoh, saya ingin rata-rata tempuntuk simulasi == 1 dan simulasi == 2, dan sama untuk standar deviasi.

Saat ini saya menggunakan kode berikut, yang cukup mengerikan:

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))

Saya yakin pasti ada cara otomatis untuk melakukan ini di R, tetapi saya tidak dapat menemukannya. Saya sudah mencoba menggunakan summary(df ~ simulation), tetapi itu tidak menghasilkan sesuatu yang bermanfaat.

Robintw
sumber

Jawaban:

17

Lihat by()atau tapply()fungsinya. Pada dasarnya,

tapply(y, g, mean)

akan memberi Anda rata-rata ydengan tingkat g. Jika Anda ingin mendapatkan data.frame dari tindakan agregat yang dihasilkan, gunakan aggregate().

Solusi yang lebih terperinci tersedia melalui summary.formula()fungsi dalam paket Hmisc .

chl
sumber
3

package doBymemiliki summaryByfungsi yang memiliki sintaks berbasis formula seperti yang Anda coba.

Juga, saya pikir pertanyaan itu akan lebih baik ditanyakan di stackexchange.

orang fabian
sumber
Terima kasih. Saya akan melihat paketnya. Ini stackexchange bukan?
robintw
1
Saya pikir fabian berarti Stackoverflow: stackoverflow.com yang untuk pemrograman R, bagaimana saya melakukan sesuatu dalam pertanyaan R. Tempat ini lebih umum tentang statistik. Keduanya dapat berbaur banyak.
Pasang kembali Monica - G. Simpson