2016-12-21 9 views
1

Ich habe einige Probleme mit meinem Datenrahmen in R. Meine Datenrahmen etwa wie folgt aussieht:Zusammenführen mehrerer Zeilen in einzelne Zeile

ID TIME DAY  URL_NAME  VALUE TIME_SPEND 
1 12:15 Monday  HOME   4  30 
1 13:15 Tuesday  CUSTOMERS 5  21 
1 15:00 Thursday PLANTS  8  8  
1 16:21 Friday  MANAGEMENT 1  6 
.... 

Also, ich möchte die Zeilen schreiben, mit dem gleichen " ID "in eine einzelne Zeile. Blick etwas wie folgt aus:

ID TIME DAY   URL_NAME  VALUE TIME_SPEND TIME1 DAY1  URL_NAME1  VALUE1 TIME_SPEND1 TIME2 DAY2  URL_NAME2  VALUE2 TIME_SPEND2 TIME3 DAY3  URL_NAME3  VALUE3 TIME_SPEND3 
1 12:15 Monday  HOME   4  30   13:15 Tuesday  CUSTOMERS  5  21   15:00 Thursday PLANTS   8  8   16:21 Friday  MANAGEMENT  1  6 

Mein zweites Problem ist, dass es etwa 1.500.00 eindeutige IDs und ich möchte dies für den gesamten Datenrahmen tun.

Ich habe keine Lösung gefunden, die zu meinem Problem passt. Ich würde mich über irgendwelche Lösungen oder Links freuen, um mein Problem zu behandeln.

+0

Ihr Problem scheint diese Antwort sehr ähnlich - http://stackoverflow.com/questions/26611708/collapse -data-frame-in-single-row-und-creating-new-columns-based-on-row- –

+0

Sind Sie sicher, dass dies notwendig/der richtige Ansatz ist? Was möchten Sie danach mit den Daten machen? – Joe

+0

Schließlich möchte ich die Navigationsketten der besuchten URLs analysieren. Ich kannte keine erfolgreiche Lösung, um diese Daten im gängigen Format zu analysieren. –

Antwort

1

Ich würde empfehlen, dcast aus dem Paket "data.table" zu verwenden, mit dem Sie mehrere Messgrößen gleichzeitig umformen können.

Beispiel:

library(data.table) 
as.data.table(mydf)[, dcast(.SD, ID ~ rowid(ID), value.var = names(mydf)[-1])] 
# ID TIME_1 TIME_2 TIME_3 DAY_1 DAY_2 DAY_3 URL_NAME_1 URL_NAME_2 URL_NAME_3 VALUE_1 VALUE_2 
# 1: 1 12:15 13:15 15:00 Monday Tuesday Thursday  HOME CUSTOMERS  PLANTS  4  5 
# 2: 2 14:15 10:19  NA Tuesday Monday  NA CUSTOMERS CUSTOMERS   NA  2  9 
# VALUE_3 TIME_SPEND_1 TIME_SPEND_2 TIME_SPEND_3 
# 1:  8   30   19   40 
# 2:  NA   21   8   NA 

Hier ist die Beispieldaten:

mydf <- data.frame(
    ID = c(1, 1, 1, 2, 2), 
    TIME = c("12:15", "13:15", "15:00", "14:15", "10:19"), 
    DAY = c("Monday", "Tuesday", "Thursday", "Tuesday", "Monday"), 
    URL_NAME = c("HOME", "CUSTOMERS", "PLANTS", "CUSTOMERS", "CUSTOMERS"), 
    VALUE = c(4, 5, 8, 2, 9), 
    TIME_SPEND = c(30, 19, 40, 21, 8) 
) 
mydf 
# ID TIME  DAY URL_NAME VALUE TIME_SPEND 
# 1 1 12:15 Monday  HOME  4   30 
# 2 1 13:15 Tuesday CUSTOMERS  5   19 
# 3 1 15:00 Thursday PLANTS  8   40 
# 4 2 14:15 Tuesday CUSTOMERS  2   21 
# 5 2 10:19 Monday CUSTOMERS  9   8 
Verwandte Themen