Histogram Bersyarat pada subset data di R

Saya baru mengenal R (terutama paket grafisnya) dan saya mengalami masalah saat memproduksi Histogram Bersyarat.

Mengingat kerangka data hipotetis df:

df<-as.data.frame(cbind(y=c(1:5),a=c(1,1,2,2,3),b=c(2,3,3,4,5), c=c(3,4,5,6,7)))

Saya ingin membuat histogram y dengan syarat kombinasi unik a, b, dan c:

groups<-unique(cbind(df$a,df$b,df$c))

(Saya memahami histogram menggunakan bingkai data khusus ini tidak akan masuk akal, tetapi untuk kesederhanaan dan singkatnya ini akan berhasil)

Saya tentu saja dapat melihat nilai unik dari variabel pengkondisian saya dan menulis kode untuk setiap histogram terpisah, tetapi saya ingin mengotomatiskan prosesnya menjadi seperti ini:

library(lattice)
for (i in 1:5) {    #for the 5 unique groups
    histogram(~y | a==groups[i,1] & b==groups[i,2] & c==groups[i,3], data=df)
    dev.new()
}

Kode ini mengeksekusi dan membuka jumlah jendela grafis yang benar, namun tidak menghasilkan output. Selain itu, jika ada argumen untuk ditambahkan ke fungsi histogram yang akan memaksa output ditampilkan hanya ketika kondisi terpenuhi (alih-alih menampilkan panel TRUE dan FALSE), saya juga tertarik mempelajarinya.

Terima kasih.


person ander2ed    schedule 12.12.2014    source sumber


Jawaban (1)


Hanya memindahkan komentar saya ke sebuah jawaban. Ini sangat mudah di ggplot menggunakan facet_wrap.

library(ggplot2)
ggplot(df, aes(x = y)) +
    geom_histogram() + 
    facet_wrap(~ a + b + c)

Menampilkan grafik di jendela yang berbeda tidak akan terintegrasi dengan ggplot. Untuk itu, saya mungkin akan melakukannya

#create a grouping variable
df$group = paste(df$a, df$b, df$c)

# split the data frame
df.list <- split(df, df$group)

# apply a function to each piece
lapply(df.list, FUN = function(data) print(qplot(data$y)))

Dengan metode split dan lapply, Anda dapat dengan mudah menentukan fungsi apa pun yang Anda inginkan, hist(), histogram(), dll. Dengan data Anda saat ini hist() hanya menampilkan satu persegi panjang, tetapi dengan lebih banyak data maka akan terlihat benar.

person Gregor Thomas    schedule 12.12.2014
comment
Terima kasih. Saya telah melihat sedikit paket ggplot2 tetapi saya sangat asing dengannya. Apakah ada cara untuk menampilkan histogram di jendela terpisah menggunakan pendekatan ini? - person ander2ed; 13.12.2014
comment
Jika Anda memaksakan aspek menjadi 1 x 1 dan melakukan ini di perangkat multihalaman, Anda akan mendapatkan plot pada halaman terpisah. - person IRTFM; 13.12.2014