2016-09-22 3 views
0

Ich versuche, eine if-Anweisung mit einer Teilmenge Funktion darin zu tun. Ich habe einen Datenrahmen dat1, zum Beispiel wie folgt aus:If-Anweisung mit verschachtelter Subset-Funktion

 Unit Cost Date 
    1  40 Sep 
    1  50 Dec 
    2  55 Sep 
    2  30 Oct 

Und auf der Grundlage seiner Reihe nrow (DAT1) ich einen anderen Datenrahmen (dat2)

 unit model sales 
     1  AAA 100 
     1  BBB 110 
     1  CCC 130 
     4  ZZZ 120 
     5  YYY 128 

ich eine IFSTATEMENT der Teilmenge wollen schrieb wie dies:

 Sales <- ifelse(nrow(dat1)>=30, 
      dat2[which(dat2$unit==1 & dat2$model=="AAA"),], 
      dat2[which(dat2$unit==1),]) 

wenn also die nrow> 30 I Teilmenge auf 2 Dimensionen dat2 anwenden möchten, sonst nur auf einem von ihnen. Dies gibt mir jedoch eine Liste mit nur der ersten Spalte, kein Datenrahmen mit allen 3 Spalten von dat2. Was ist der richtige Befehl, dies zu tun? Vielen Dank im Voraus für Ihre Hilfe.

+1

Verwenden 'if' und' else'. Dies ist kein Anwendungsfall für "ifelse". – Roland

Antwort

0

Dies funktioniert:

Sales <- dat2[which(dat2$unit==1),] # default 
if (nrow(dat1)>=30) { 
    Sales <-dat2[which(dat2$unit==1 & dat2$model=="AAA"),] 
} 
0

Verwenden wenn subsetting für Daten, die von anderen Aussagen gefolgt

if(nrow(dat1)>=30){ 
Sales <- dat2[dat2$unit==1 & dat2$model=="AAA",] 
}else{ 
Sales <- dat2[dat2$unit==1,]} 
Verwandte Themen