2017-04-10 4 views
0

Datenrahmen (Mydata) enthält Werte.Wie Zeichen Zeit Daten in einen Faktor

Delivery.Time Customer.Name    Product.Name 
11:22:00  Grace Wangen    Insalatone pollo 
19:46:47  ystein Skagestad   CLASSIC CHEESEBURGER 
08:54:20  Hans Hallseth    Latte 
15:25:21  Thomas Stlen    SUSHI MORIAWASE  
14:45:00  Ingvild Berg    SUSHI CHIISAI 
12:45:33  Christopher Frenning  Funghi 

Mydata["Delivery.Labels"] <- NA ## Added new columns 

deliBreaks <- c("19:00:00","05:00:00","11:00:00","12:00:00","15:00:00") 


Mydata$Delivery.Labels <-c("Dinner", "Breakfast", "Brunch", "Lunch", "Snackstime")[ findInterval(chron(times=Mydata$Delivery.Time), chron(times=deliBreaks))] 

Beim Ausführen von Code, bekomme ich unten Fehlermeldung.

‚vec‘ muss nicht abnehmend

ich für meine Tabelle sieht wie folgt aus der Suche sortiert werden.

Delivery.Time Customer.Name    Product.Name      Delivery.Lables 

11:22:00  Grace Wangen    Insalatone pollo   Brunch 
19:46:47  ystein Skagestad   CLASSIC CHEESEBURGER   Dinner 
08:54:20  Hans Hallseth    Latte      Breakfast 
15:25:21  Thomas Stlen    SUSHI MORIAWASE    Snackstime 
14:45:00  Ingvild Berg    SUSHI CHIISAI    Lunch 
12:45:33  Christopher Frenning  Funghi      Lunch 
+0

Können Sie bitte die Frage aufschreiben und in einigen Sätzen erklären, was Sie wollen? – Elin

+0

Fehlermeldung ('vec' muss nicht-abnehmend sortiert werden) @Elin –

+0

Stellen Sie sicher, dass Sie die 'deliBreaks' als Zeiten ohne Strings eingeben. – Elin

Antwort

0

Hier ist, wie Sie es mit einem minimalen Beispiel tun können. Konvertieren Sie zuerst Ihre Daten in Zeitdaten. Verwenden Sie dann die Funktion cut(), um die Daten in Zeitblöcke aufzuteilen.

time<- strptime(c("11:22:00", "19:46:47", "08:54:20", "15:25:21", "14:45:00", "12:45:33"), format= "%T") 


Delivery.Labels <- cut(time, breaks = strptime(c("00:00:01", "11:00:00","12:00:00","15:00:00", "19:00:00", "23:59:59"), "%T"), 
     labels = c("Breakfast", "Brunch", "Lunch", "Snackstime", "Dinner"), 
     right = TRUE, 
     include.lowest=TRUE 
     ) 

strptime() konvertiert die Zeichenfolgen in Zeit. cut() speichert Ihre Daten in Bins. Möglicherweise möchten Sie den resultierenden Faktor geordnet machen.

+0

Vielen Dank für Ihre Hilfe. –

Verwandte Themen