Ich habe folgenden DatenrahmenAlternative zur langen Liste der verschachtelten ifelse Anweisung mit mehreren Bedingungen
structure(list(FY = c("2015-2016", "2015-2016", "2015-2016",
"2015-2016"), YEARMN = structure(c(2015.25, 2015.25, 2015.25,
2015.25), class = "yearmon"), BRAND = c("3M CAR CARE", "CAR CARE 3M",
"CAR CARE 3M", "CAR CARE 3M"), variable = structure(c(1L,
2L, 3L, 4L), .Label = c("IstWEEKRent", "IIndWEEKRent", "IIIrdWEEKRent",
"IVthWEEKRent", "mymonth"), class = "factor"), value = c("0",
"17500", "85000", "212500"), mymonth = c("Apr", "Apr", "Apr",
"Apr")), .Names = c("FY", "YEARMN", "BRAND", "variable", "value",
"mymonth"), row.names = c(NA, 4L), class = "data.frame")
Der tatsächliche Datenrahmen wie folgt aussieht:
FY YEARMN BRAND variable value mymonth
1 2015-2016 Apr 2015 3M CAR CARE IstWEEKRent 0 Apr
2 2015-2016 Apr 2015 CAR CARE 3M IIndWEEKRent 17500 Apr
3 2015-2016 Apr 2015 CAR CARE 3M IIIrdWEEKRent 85000 Apr
4 2015-2016 Apr 2015 CAR CARE 3M IVthWEEKRent 212500 Apr
Die Säule meines Monats hat Monate ab April zu Mar ... und jeder Monat hat 4 Wochen in meinem Datensatz, der in der Spaltenvariablen angegeben ist. Ich versuche, eine Woche Zahl für die FY April zu erstellen - Mar, von 1 bis 48. Start Ich möchte 1 Woche Nummer geben, die den Zustand entspricht
variable == "IstWeekRent" & mymonth == "Apr"
I verwendet ifelse Funktion dieses erhalten getan ... das funktioniert gut ... aber wenn ich schließen die gleiche in meine glänzende Anwendung ich die folgende Fehlermeldung erhalten:
Error in parse(file, keep.source = FALSE, srcfile = src, encoding = enc) :
contextstack overflow at line 2870
Mein aktueller ifelse Bedingungsanweisung sieht wie folgt aus:
trndR$weeks <- ifelse(trndR$mymonth == "Apr" & trndR$variable == "IstWEEKRent", 1,
ifelse(trndR$mymonth == "Apr" & trndR$variable == "IIndWEEKRent", 2,
ifelse(trndR$mymonth == "Apr" & trndR$variable == "IIIrdWEEKRent", 3,
ifelse(trndR$mymonth == "Apr" & trndR$variable == "IVthWEEKRent", 4,
ifelse(trndR$mymonth == "May" & trndR$variable == "IstWEEKRent", 5,
ifelse(trndR$mymonth == "May" & trndR$variable == "IIndWEEKRent", 6,
trndR
ist der Name meines df und die Bedingung erstreckt sich bis 48.
Ich fand heraus, dass ich nur bis zu 50 verschachtelte ifelse Bedingung haben kann ... aber nicht ganz sicher, wie dies zu beheben ist. Ich lese über Anwendungsfunktion, weiß aber nicht, wie man es in diesem Fall verwendet.
Sind die Daten sortiert? Die Daten, die Sie angezeigt haben, sehen so aus, als hätten Sie eine konsistente 1 Zeile pro Woche. In diesem Fall würde die Zeilennummer wahrscheinlich für Ihre "Wochen" -Spalte ausreichen. – rosscova