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.

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 .


3

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

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.