[英]data.table expand solution for more than one observation per row not working
我有一个包含 32,285 个观察值的dataframe
框,其中包含变量year
、 epiweek
、 count
。 数据框不是“平坦的”,因为在许多情况下计数列多于 1,即,多于一个观察被集中到多行中。 我已经完成了两个页面的所有解决方案,但总是收到错误:无效的“时间”参数。
第二页上的解决方案(“扩展 data.table 时出现奇怪的错误”)似乎是对最佳方法的共识,他们似乎已经解决了这个问题,所以我创建了一个小的 reprex,但 reprex 有效,没有错误:
year1 <- c('2010', '2011', '2010', '2012', '2010')
epiweek1 <- c(1, 1, 2, 2, 3)
count1 <- c(1, 5, 38, 13, 1)
mydt1 <- data.table(year1, epiweek1, count1)
newdt1 <- mydt1[ ,.(rep(rep(1,.N),count1)), by=.(year1,epiweek1)]
大 df 由 Epiweeks 订购。 所有年份的 Epiweek 1 中的所有观察,然后是所有年份的 Epiweek 2 中的所有年份等。第一个 reprex 与 df 中的序列一致,如下所示:
year2 <- c('2010', '2011', '2011', '2012', '2013')
epiweek2 <- c(1, 1, 2, 2, 3)
count2 <- c(1, 5, 38, 13, 1)
mydt2 <- data.table(year2, epiweek2, count2)
newdt2 <- mydt2[ ,.(rep(rep(1,.N),count2)), by=.(year2,epiweek2)]
Reprex 3 是 reprex 1,其中一个 Epiweeks 失序。 它使用 dt 方法扩展数据表给出错误:
year3 <- c('2010', '2011', '2010', '2012', '2010')
epiweek3 <- c(1, 2, 1, 2, 3)
count3 <- c(1, 5, 38, 13, 1)
newdt3 <- mydt1[ ,.(rep(rep(1,.N),count3)), by=.(year3,epiweek3)]#Error in rep(rep(1, .N),
count3) : invalid 'times' argument
如果我在 reprex 2 中使用 count1,我也会得到错误。计数彼此相等,所以不确定为什么会发生这种情况。
count1 == count2, count1 == count3
这三个都与@vonjd在第二页最后一条评论中的一段制表代码一致:
mydt1[,.N,by=.(year1,epiweek1)][,table(N)]
mydt2[,.N,by=.(year2,epiweek2)][,table(N)]
mydt3[,.N,by=.(year3,epiweek3)][,table(N)]
因此,我的大 df 似乎结构类似于 reprex 1 和 2,它们扩展了表格并且不给出错误。 一个计数行中的最大值是 166。所以,我很困惑为什么扩展 data.table 方法不适用于我的大数据框。 是的,我确实先转换为数据表。
使用 R 版本 3.6.1
这正是我所需要的:
dt.0742long <- dt.0742[ ,
.(tryCatch(rep(rep(1,.N),count), error=browser)), by=.(year,epiwk)]
V1被计数
> glimpse(dt.0742long)
Observations: 113,898 Variables: 3 $ year <dbl> 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 201… $ epiwk <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, … $ V1 <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, … >
> glimpse(dt.0742)
Observations: 32,285
Variables: 4
$ year <dbl> 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010,…
$ epiwk <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
$ count <dbl> 1, 2, 2, 1, 1, 15, 14, 12, 15, 8, 4, 5, 11, 7, 3, 4, 2, 1, 2, 4, 1, 1, 1, 2, …
$ Case_Category <dbl> 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.