Создание фрейма данных в R из списка данных, в котором отсутствуют некоторые значения - PullRequest
2 голосов
/ 01 сентября 2011

У меня есть CSV с длинным списком данных, который выглядит следующим образом:

Date    user_id    value
4/1       1           5
4/1       2           3
4/1       3           10
4/2       1           1
4/2       3           7

и я хочу переместить его во фрейм данных, в котором есть только один столбец идентификаторов пользователя и столбец для каждой даты. Я предполагаю, что есть способ сделать с sapply или lapply, но я не уверен, как справиться с тем, что идентификаторы пользователя не всегда существуют для каждой даты.

Ответы [ 2 ]

1 голос
/ 01 сентября 2011

Может быть что-то с использованием reshape, например, что подразумевает, что ваши данные хранятся в dat:

reshape(dat,v.names = "value",idvar = "user_id",
        direction = "wide",timevar = "Date")

  user_id value.4/1 value.4/2
1       1         5         1
2       2         3        NA
3       3        10         7

Или, может быть, проще, используйте dcast из reshape2:

dcast(dat,user_id~Date)

  user_id 4/1 4/2
1       1   5   1
2       2   3  NA
3       3  10   7
0 голосов
/ 04 декабря 2015

Это также то, что tidyr::spread делает довольно удобно

require(tidyr)
require(dplyr)

df <- data.frame("Date" = rep(c("Nov", "Dec"), each = 3), 
             "user.id" = rep(1:3, 2),
             "value" = rnorm(6))

df.2 <- df %>% 
spread(Date, value)

df.2
  user.id        Dec       Nov
     1      -1.9094765   -1.101037
     2       0.2358694   -1.418151
     3      -0.4297790   -1.426573
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...