0

我有一个像下面生成的数据框。id 列不是唯一的,我还有一个 365 列的数据框,每天一列。“日”栏代表一年中的哪一天。我希望第二个数据帧的每一行都映射到 id 列,其中 1 表示存在该 id 的日期,否则为 0。数据没有像示例数据框中那样整齐排列。

data <- data.frame(id = 1:100, day = as.integer(runif(100, 0, 364)))

在原始数据帧中具有值 0、3 和 364 的 id 的预期输出将是:

    id day0 day1 day2 day3 ... day364
     1    1    0    0    1          1

我也对涉及使用data.table. 谢谢!

4

2 回答 2

0

根据我的评论,您只需要一个交叉表,可以通过以下方式获得:

tab <- with(data,table(id, day))

如果您只希望该表显示匹配项的存在/不存在(即,即使多个条目对应于相同的 id/day 对,单元格也应为 1),则只需tab使用以下内容进行转换:

tab[tab>=1] <- 1
于 2013-07-01T17:54:24.563 回答
0

只是为了好玩,这里有一个替代解决方案:

library(reshape2)
dcast(data, id ~ day, is.integer, fill =0)
于 2013-07-01T20:58:39.537 回答