2016-12-05 7 views
2

Ich möchte einen Spaltenwert auswählen und zurückgeben, der in einer Teilmenge von Spalten enthalten ist, basierend auf dem Wert in einer anderen Spalte.R - Auswählen und Zurückgeben des Spaltenwerts basierend auf dem Wert in einer anderen Spalte

Speziell möchte ich eine neue Variable ("NEWE") erstellen, indem Sie den Wert in RE auswählen, wenn die MAX-Variable = "RP" und indem Sie den Wert in IE auswählen, wenn die MAX-Variable = "IP".

Von beachten Sie, ich arbeite mit einer Datentabelle von ~ 160 Spalten und ~ 70.000 Zeilen (ich bemerke die Existenz zusätzlicher Spalten in meinem Beispiel durch die Einbeziehung V1-V9).

haben:

V1 … V9 RE IE MAX 
4 … 3 3 4 RP 
6 … 6 3 2 IP 
2 … 2 1 2 IP 
6 … 2 2 3 RP 
. . . . . . 
. . . . . . 
. . . . . . 

Und der Datensatz Ich möchte:

V1 … V9 RE IE MAX NEWE 
4 … 3 3 4 RP 3 
6 … 6 3 2 IP 2 
2 … 2 1 2 IP 2 
6 … 2 2 3 RP 2 
. . . . . . . 
. . . . . . . 
. . . . . . . 

Vielen Dank im Voraus für Ihre Hilfe!

+0

Haben Sie versucht, mit 'ifelse' (Tippfehler lieber mit mit() zu vermeiden)? –

+0

wird es immer nur zwischen "RP" und "IP" sein ?? –

+0

Nein, die Prozedur wird in zwei Iterationen zwischen sechs verschiedenen Spalten ausgeführt – Justin

Antwort

4
data$NEWE <- ifelse(data$MAX == "RP", data$RE, ifelse(data$MAX == "RP",data$IE, "value if both doesn't satify")) 

wenn es entweder von RP und von IP immer ist!

data$NEWE <- ifelse(data$MAX == "RP", data$RE , data$IE) 

für Ihren Fall: es ist eine einfache Erweiterung von ifelse -

data$NEWE <- with(data, ifelse(MAX == "RP", RE, 
           ifelse(MAX == "IP",IE, 
            ifelse(MAX == "AP", AE, 
              ifelse(MAX == "SP", SE, 
                ifelse(MAX == "EP",EE, 
                 ifelse(MAX == "CP", CE, NA))))))) 
Verwandte Themen