2017-06-17 2 views
0

Haftungsausschluss: Dies ist eine Frage bezüglich einer Zuweisung für einen Coursera-Kurs.if/else-Anweisung Auswertung nur else-Anweisung

Ich habe Probleme mit der Erstellung einer neuen Spalte, die in meinem Datensatz zwischen Wochentagen und Wochenenden unterscheidet. Ich verwende eine verschachtelte if/else-Anweisung innerhalb einer for-Schleife. Das Problem ist, dass die Ausgabe jede Zeile "Wochentag" macht. Sieht jemand etwas grell falsch mit meinem Code? Mein Endziel ist es, eine neue Faktorvariable zu erstellen, die entweder "Wochenende" oder "Wochentag" ist.

df4 <- mutate(df4, day = weekdays(df4$date)) 
for (i in df4$day) { 
    if(i %in% c("Saturday",'Sunday')) { 
     df4$day_type <- 'weekend' 
    } else { 
     df4$day_type <- 'weekday' 
    } 
} 
+1

'ifelse' vektorisiert wird. Sie können einfach 'ifelse (df4 $ day% in% c ('Samstag', 'Sonntag'), 'Wochenende', 'Wochentag')' – Sotos

+0

In Ihrer for-Schleife, Sie zuweisen die gesamte Spalte 'day_type' statt immer nur ein Element. Ich vermute, warum du alles als "Wochentag" ansiehst, weil der letzte Wert in "Tag" ein Wochentag ist. Sie könnten versuchen, die Anzahl der Zeilen ('i in 1: nrow (df4)') zu durchlaufen und dann, wenn Sie sonst 'df4 $ day_type [i]' verwenden. Aber Ihre beste Wette ist wahrscheinlich Sotos 'ifelse –

+0

ifelse arbeitete. Gracias Sotos –

Antwort

0

ich ein wenig Code ändern. (Siehe unten)

for (i in 1 : dim(df4)[1]) { 
    if(df4$day[i] %in% c('Saturday','Sunday')) { 
    df4$day_type[i] <- 'weekend' 
    } else { 
    df4$day_type[i] <- 'weekday' 
    } 
}