2012-12-07 23 views
5

Ich versuche, "von" von "für" zu verwenden, um viele Untergraphen mit einer oder zwei Gruppenvariablen zu erstellen. Beide Gruppenvariablen sind ein Faktor Variablen (Sex ist ein Dummy und Vater sozialen Status hat mehrere Ebenen). Wie kann ich die Ebene (aka Name) der Gruppe in der Legende oder dem Titel der Graphen hinzufügen?Verwenden von "von" zum Erstellen mehrerer Grafiktitel

Dies ist der Code, den ich verwende.

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

Bitte Code eingeben, der ausgeschnitten und eingefügt werden kann. Auf dieser Seite gibt es kein Datenobjekt namens data.frame. –

+0

Vielleicht macht mein Beispielcode meine Frage jetzt klarer. –

+0

Ja, es ist klarer, obwohl ich einen Fehler mit dem Aufruf 'seqdplot' innerhalb der for-Schleife erhalte. (Ein Index außerhalb der Grenzen Eeror ... ist das, was man sieht?) –

Antwort

2

Die seqdplot Funktion es automatisch für Sie tun können, die Gruppe Argument:

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

Dabei ist seqobject ein Objekt, das mit der seqdef-Funktion erstellt wurde.

+0

Sehr schönes Feature, aber ich möchte zwei (oder mehr) Gruppierungsvariablen verwenden, deshalb möchte ich es mit" by "oder" for "kombinieren um neue Graphen für jede neue Ebene der zweiten Gruppierungsvariablen zu erzeugen. –

+0

Wenn Sie mehrere Gruppierungsvariablen haben möchten, können Sie die Funktion "interaction" verwenden: seqdplot (seqobject, group = interaction (data.frame $ group1, data.frame $ group2, ...)) –

2

Sie können, indem man die data.frame Teilmenge als function(X) die Argumente einer Funktion anpassen:

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

Der Titel scheint eine Zeichenfolgeneingabe zu benötigen. Wie kann ich "X $ group [1]" als String eingeben, während ich weiterhin den Level der Variablen verwende? –

+0

Es scheint, dass Sie zwei verschiedene Objekte in 'by' verwenden. Denken Sie daran, dass nur das erste Objekt an 'function (X) übergeben wird. –

Verwandte Themen