我有一个类似下面生成的数据框。 id列不唯一我还有一个365列的数据框,每天一个。 “日”列代表一年中的某一天。我希望第二个数据框的每一行都映射到id列,其中包含1s的日期,其中包含该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
的解决方案持开放态度。谢谢!
答案 0 :(得分:1)
根据我的评论,您只需要一个可交叉的,可以通过以下方式获得:
tab <- with(data,table(id, day))
如果您只是希望该表显示匹配的存在/不存在(即,即使多个条目对应于相同的id / day对,则单元格应为1),然后使用以下内容转换tab
:
tab[tab>=1] <- 1
答案 1 :(得分:0)
只是为了好玩,这是另一种解决方案:
library(reshape2)
dcast(data, id ~ day, is.integer, fill =0)