在R中从缺少某些值的列表数据创建数据框

时间:2011-08-31 21:58:09

标签: r csv dataframe

我有一个带有长列表数据的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

我希望将其移动到一个数据框中,该数据框只有一列用户ID和每个日期的列。我假设有一种方法可以使用sapplylapply,但我不知道如何处理用户ID并不总是存在于每个日期。

2 个答案:

答案 0 :(得分:1)

也许使用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

答案 1 :(得分:0)

这也是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