У меня есть набор данных с 3 переменными: userID
, y
и timestamp
.df
является примером.
df <- data.frame(userID=c(1, 1, 1, 1, 2, 2, 2, 3, 3, 3),
y=c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.01),
timestamp=as.POSIXct(c("2017-10-01 21:00:00",
"2017-10-01 22:00:00",
"2017-10-01 23:00:00",
"2017-10-02 00:00:00",
"2017-10-01 21:00:00",
"2017-10-01 22:00:00",
"2017-10-01 23:00:00",
"2017-10-01 22:00:00",
"2017-10-01 23:00:00",
"2017-10-02 00:00:00"), tz="GMT"))
Я хочу разбить строки на userID
и объединить блоки как столбцы с одинаковым timestamp
, как в df_new
:
df_new <- data.frame(as.POSIXct(c("2017-10-01 21:00:00",
"2017-10-01 22:00:00",
"2017-10-01 23:00:00",
"2017-10-02 00:00:00"), tz="GMT"),
c(0.1, 0.2, 0.3, 0.4), c(0.5, 0.6, 0.7,NA),
c(NA, 0.8, 0.9, 0.01))
colnames(df_new) <- c("timestamp", "1", "2", "3")
Я пытался использовать команду split(df, df$userID)
, но я не смог соединить столбцы.
У меня огромный массив данных, поэтому мне нужно решение, доступное для большого набора данных.Кто-нибудь может мне помочь, пожалуйста?
Мне нужно сделать эту трансформацию, потому что я должен использовать полученный фрейм данных как несколько часовых временных рядов.