2012-12-07 30 views
5

Bir veya iki grup değişkenini kullanarak birçok alt grafik oluşturmak için "for" ifadesini "by" olarak kullanmaya çalışıyorum. Her iki grup değişkeni de bir faktör değişkenidir (cinsiyet bir mankendir ve babanın sosyal statüsü birden fazla seviyeye sahiptir). Grubun seviyesini (diğer adıyla) lejantta veya grafiklerin başlığını nasıl ekleyebilirim?Birden çok grafik başlığı oluşturmak için "by" kullanma

Kullandığım kod budur.

library(TraMineR) 
library(Hmisc) 
data(biofam) 
biofam.lab <- c("Parent", "Left", "Married", "Left+Marr", 
      "Child", "Left+Child", "Left+Marr+Child", "Divorced") 
biofam.seq <- seqdef(biofam, 10:25, labels=biofam.lab) 

class(biofam$sex) 
levels(biofam$sex) 
describe(biofam$sex) 

class(biofam$cspfaj) 
levels(biofam$cspfaj) 
describe(biofam$cspfaj) 

### Simple plots 
seqdplot(biofam.seq) 
seqdplot(biofam.seq, group=biofam$sex, title="Marital status by gender") 

### Plot with automatic title using "by" 
by(biofam.seq, biofam$sex, function(X) seqdplot(X, title="X$sex[1]")) 
by(biofam.seq, biofam$sex, function(X) seqdplot(X, title=X$sex[1])) 

### Plot with automatic title and multiple-grouping using "for" 
for(n in c(1, 2, 3)) { 
    seqdplot(subset(biofam.seq, subset=biofam$cspfaj==(n)), title="(n)") 
} 
for(n in c(1, 2, 3)) { 
    seqdplot(subset(biofam.seq, subset=biofam$cspfaj==(n)), group=biofam$sex, title="(n)") 
} 
+1

Lütfen kesilip yapıştırılabilen kodları gönderin ve birlikte çalışacağınız bir örnek vereceğiz. Bu sayfada data.frame adlı veri nesnesi yok. –

+0

Belki de örnek kodum sorumu şimdi daha net hale getiriyor. –

+0

Evet, daha açık, her ne kadar for döngü içinde 'seqdplot' çağrısı ile bir hata alıyorum. (Eeror dışında bir alt simge ... görüyor musunuz?) –

cevap

2

seqdplot fonksiyonu sizin için otomatik olarak yapabilir grup argümanı kullanarak:

seqdplot(seqobject, group=data.frame$group) 

Burada seqobject, seqdef işleviyle oluşturulmuş bir nesnedir.

+0

Gerçekten çok güzel bir özellik, ama iki (veya daha fazla) gruplama değişkenini kullanmak istiyorum, bu yüzden" by "veya" for "ile birleştirmek istiyorum İkinci gruplama değişkeninin her yeni seviyesi için yeni grafikler üretme emri. –

+0

Birden çok gruplama değişkeni istiyorsanız, "etkileşim" işlevini kullanabilirsiniz: seqdplot (seqobject, group = etkileşim (data.frame $ group1, data.frame $ group2, ...)) –

2

Sen function(X) olarak data.frame alt kümesini geçirerek bir fonksiyonun argümanları ayarlayabilirsiniz:

by(data.frame, data.frame$group, function(X) seqdplot(X, title=X$group[1])) 
+0

Başlığın bir string girişine ihtiyacı var gibi görünüyor. Hala değişken seviyesini kullanırken "X $ group [1]" i bir string olarak nasıl girebilirim? –

+0

Görünüşe göre, 'by' içinde iki farklı nesne kullanıyorsunuz. Sadece ilk nesnenin işlevine geçtiğini aklınızdan çıkarmayın (X) ' –

İlgili konular