2016-12-21 10 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 "を1つの行にまとめます。

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固有のIDがあること、であると私は全体のデータフレームのためにこれを行うしたいと思います: はこのような何かを探しています。

問題に適した解決策が見つかりませんでした。 私の問題を解決するための解決策やリンクがあれば幸いです。

+0

あなたの問題は、この答えに非常に似ているようだ - http://stackoverflow.com/questions/26611708/collapse -data-frame-into-single-row-and-creating-new-columns-on-row-r –

+0

これが必要ですか正しいアプローチですか?この後のデータで何をしたいですか? – Joe

+0

最後に、訪問したURLのナビゲーションチェーンを分析したいと思います。私はこれらのデータを一般的な形式で分析するための何らかの解決策を知らなかった。 –

答えて

1

"data.table"パッケージのdcastを使用することをお勧めします。これにより、複数のメジャー変数を一度に再構成できます。

例:

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 
関連する問題