【发布时间】:2021-02-08 05:49:59
【问题描述】:
我有一个宽格式的data.table,如下所示:
library(data.table)
dt_wide <- data.table(
"id" = seq(1:10),
"yw_1001" = trunc( runif(10,0,100) ),
"yw_1002" = trunc( runif(10,0,100) ),
"yw_1003" = trunc( runif(10,0,100) ),
"yw_1004" = trunc( runif(10,0,100) ),
"yw_1005" = trunc( runif(10,0,100) ),
"yw_1006" = trunc( runif(10,0,100) ),
"yw_1007" = trunc( runif(10,0,100) ),
"yw_1008" = trunc( runif(10,0,100) ),
"yw_1009" = trunc( runif(10,0,100) ),
"yw_1010" = trunc( runif(10,0,100) ),
"yw_1011" = trunc( runif(10,0,100) ),
"yw_1012" = trunc( runif(10,0,100) ),
"yw_1013" = trunc( runif(10,0,100) ),
"yw_1014" = trunc( runif(10,0,100) ),
"yw_1015" = trunc( runif(10,0,100) ),
"yw_1016" = trunc( runif(10,0,100) ),
"yw_1017" = trunc( runif(10,0,100) ),
"yw_1018" = trunc( runif(10,0,100) ),
"yw_1019" = trunc( runif(10,0,100) ),
"yw_1020" = trunc( runif(10,0,100) ),
"yw_1021" = trunc( runif(10,0,100) ),
"yw_1022" = trunc( runif(10,0,100) ),
"yw_1023" = trunc( runif(10,0,100) ),
"yw_1024" = trunc( runif(10,0,100) ),
"yw_1025" = trunc( runif(10,0,100) ),
"yw_1026" = trunc( runif(10,0,100) ),
"yw_1027" = trunc( runif(10,0,100) ),
"yw_1028" = trunc( runif(10,0,100) ),
"yw_1029" = trunc( runif(10,0,100) ),
"yw_1030" = trunc( runif(10,0,100) ),
"yw_1031" = trunc( runif(10,0,100) ),
"yw_1032" = trunc( runif(10,0,100) ),
"yw_1033" = trunc( runif(10,0,100) ),
"yw_1034" = trunc( runif(10,0,100) ),
"yw_1035" = trunc( runif(10,0,100) ),
"yw_1036" = trunc( runif(10,0,100) ),
"yw_1037" = trunc( runif(10,0,100) ),
"yw_1038" = trunc( runif(10,0,100) ),
"yw_1039" = trunc( runif(10,0,100) ),
"yw_1040" = trunc( runif(10,0,100) ),
"yw_1041" = trunc( runif(10,0,100) ),
"yw_1042" = trunc( runif(10,0,100) ),
"yw_1043" = trunc( runif(10,0,100) ),
"yw_1044" = trunc( runif(10,0,100) ),
"yw_1045" = trunc( runif(10,0,100) ),
"yw_1046" = trunc( runif(10,0,100) ),
"yw_1047" = trunc( runif(10,0,100) ),
"yw_1048" = trunc( runif(10,0,100) ),
"yw_1049" = trunc( runif(10,0,100) ),
"yw_1050" = trunc( runif(10,0,100) ),
"yw_1051" = trunc( runif(10,0,100) ),
"yw_1052" = trunc( runif(10,0,100) )
)
cols 对应于年份(前两位数)和周数(最后一位数)。
在我的实际数据集中(nrow=5,500,000,ncol=1400),我不能data.table::melt,因为它会创建一个超过行限制的 data.table。
实际上,我只需要某些周数的值。取如下data.table
dt2 <- data.table(
"id" = seq(1:10),
"date" = sample(seq(as.Date('2010/01/01'), as.Date('2010/12/31'), by="day"), 10)
)
对于每个唯一的id,我需要将日期后 5、10 和 15 周的 dt_wide 值保留在 dt2 中。理想情况下,希望减小 dt_wide 中的 col 大小,以便我可以融合为长格式。
有什么建议吗?
【问题讨论】:
-
生成随机数据时请使用
set.seed。还显示共享数据的预期输出。我不清楚dt2与dt_wide有什么关系。还有列名yw_1001与年份和周数的对应关系。
标签: r data.table melt