Erstellen kategorischer Variablen aus sich gegenseitig ausschließenden Dummy-Variablen

8

Meine Frage betrifft eine Ausarbeitung einer zuvor beantworteten Frage zu multiple Dummy-Variablen in eine einzelne kategoriale Variable .

In der zuvor gestellten Frage wurde die kategoriale Variable aus Dummy-Variablen erstellt, die sich NICHT gegenseitig ausschlossen. Für meinen Fall schließen sich meine Dummy-Variablen gegenseitig aus, weil sie gekreuzte experimentelle Bedingungen in einem 2X2 zwischen Subjekten faktoriellen Design darstellen (das hat auch eine Subjektkomponente, die ich hier nicht anspreche), also denke ich nicht interaction tut was ich tun muss.

Zum Beispiel könnten meine Daten so aussehen:

%Vor%

Ich möchte jetzt kategorische Variablen erstellen, die verschiedene Arten von Bedingungen kombinieren. Zum Beispiel könnten Personen, die Werte für die Bedingung A und B hatten, mit einer kategorialen Variablen und Personen mit Werten für die Bedingung C und D codiert werden.

%Vor%

Im Moment mache ich das mit ifelse() Anweisungen, was ganz einfach ein heißes Durcheinander ist (und nicht immer funktioniert). Bitte helfen Sie! Es gibt wahrscheinlich einen sehr offensichtlichen "einfacheren Weg".

BEARBEITEN:

Die Arten von ifelse -Befehlen, die ich verwende, sind wie folgt:

%Vor%

In Wirklichkeit kombiniere ich jedes Mal 6-8 Spalten, also würde eine elegantere Lösung viel helfen.

    
roody 21.04.2013, 19:31
quelle

3 Antworten

4

Mein R-Paket verfügt über eine praktische Funktion, mit der Sie den ersten Nicht- NA -Wert für jedes Element in einer Liste auswählen können von Vektoren:

%Vor%

(Ich bin nicht sicher, ob das funktioniert, wenn conditionA und conditionB Faktoren sind. Konvertiere sie in numerische Werte, bevor du as.numeric(as.character(...)) verwendest, falls nötig.)

Andernfalls könntest du interaction ausprobieren, kombiniert mit der Umcodierung der Ebenen des resultierenden Faktors - aber für mich sieht es so aus, als ob du dich mehr für die erste Lösung interessierst:

%Vor%     
krlmlr 21.04.2013, 20:19
quelle
1

Ich denke, diese Funktion gibt Ihnen, was Sie brauchen (zugegebenermaßen ist dies ein schneller Hack).

%Vor%

Und hier wird es mit den von Ihnen bereitgestellten Beispieldaten verwendet.

%Vor%     
Jason Morgan 21.04.2013 20:02
quelle
1

Nun, ich denke, du kannst es einfach mit ifelse machen, etwas wie:

%Vor%

Ein anderer Weg könnte sein:

%Vor%

Und eine dritte Lösung, sicherlich praktischer, wenn Sie mehr als zwei Spalten haben:

%Vor%     
juba 21.04.2013 20:01
quelle