2016-12-21 6 views
1

Я некоторые проблемы с кадром данных в R. Мой кадр данных выглядит следующим образом:Объединение нескольких строк в одну строку

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 
.... 

Итак, я хочу, чтобы написать строки, содержащее то же самое " ID "в одну строку. Глядя что-то вроде этого:

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 

Моя вторая проблема в том, что существует около 1.500.00 уникальных идентификаторов и я хотел бы сделать это для всего кадра данных.

Я не нашел решения, соответствующего моей проблеме. Я был бы рад любым решениям или ссылкам для решения моей проблемы.

+0

Ваша проблема кажется очень похожа на этот ответ - http://stackoverflow.com/questions/26611708/collapse -data-frame-in-single-row-and-create-new-columns-based-on-row-r –

+0

Вы уверены, что это необходимо/правильный подход? Что вы хотите делать с данными после этого? – Joe

+0

Наконец, я хочу проанализировать навигационные цепи посещенных URL-адресов. Я не знал ни одного успешного решения для анализа этих данных в общем формате. –

ответ

1

Я бы рекомендовал использовать dcast из пакета data.table, что позволило бы сразу изменить несколько переменных измерения.

Пример:

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 

Вот выборочные данные используются:

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 
Смежные вопросы