2016-07-13 18 views
-1

Für jeden Gegenstand, eine Beobachtung (oder Zeile) gehalten wird, basierend auf der folgenden:select Beobachtungen basierend auf mehreren Bedingungen

var2=c and var3=B wenn dann diese Beobachtung halten. Wenn nicht, überprüfen Sie if var2=c and var3=S und behalten Sie diese Beobachtung. wenn nicht, dann dann prüfen, ob var2=L and var3=B, schließlich, wenn var2=L and var3=S überprüfen, wenn nicht 0.

Jede Hilfe würde geschätzt setzen.

Meine Daten sieht wie folgt aus:

id var1 var2 var3 
1 100 L S 
1 100 L B 
1 2 C B 
1 2 C S 
2 5 C S 
2 10 L S 
2 NA L B 
2 NA C B 

Mein gewünschte Ergebnis ist:

id var1 var2 var3 
1 2 C B 
2 5 C S 
+0

Ich verstehe es nicht ... Können Sie bitte die Bedingungen besser erklären? – Sotos

+0

http://stackoverflow.com/help/mcve –

+0

Der erste Codeblock - wo Sie die Zuweisung von Werten zeigen - macht keinen Sinn. Zum Beispiel "var2 = c und var3 = B wenn nicht dann". Was meinst du mit "wenn nicht dann"? Was wird hier getestet? Meinst du "if (var3 ==" B ") {var2 <-" c "}" "und wenn das nicht wahr ist, dann deine nächste Aussage, usw.? –

Antwort

0

Hier ist eine Idee dplyr verwenden,

library(dplyr) 
x <- c('CB', 'CS', 'LB', 'LS') #vector with conditions 
df %>% 
    group_by(id) %>% 
    na.omit() %>% 
    slice(order(match(paste0(var2, var3), x))[1]) 

#Source: local data frame [2 x 4] 
#Groups: id [2] 

#  id var1 var2 var3 
# <int> <int> <fctr> <fctr> 
#1  1  2  C  B 
#2  2  5  C  S 

DATA

dput(df) 
structure(list(id = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L), var1 = c(100L, 
100L, 2L, 2L, 5L, 10L, NA, NA), var2 = structure(c(2L, 2L, 1L, 
1L, 1L, 2L, 2L, 1L), .Label = c("C", "L"), class = "factor"), 
    var3 = structure(c(2L, 1L, 1L, 2L, 2L, 2L, 1L, 1L), .Label = c("B", 
    "S"), class = "factor")), .Names = c("id", "var1", "var2", 
"var3"), class = "data.frame", row.names = c(NA, -8L)) 
+0

Danke. Du meinst die Bedingung CB muss kombiniert werden ?? – sri

+0

@sri Es muss nicht kombiniert werden, aber es ist einfacher zu vergleichen und "Match" basierend auf "Wichtigkeit" – Sotos

Verwandte Themen