小编MrS*_*ton的帖子

data.table fcase 与 dplyr case_when

使用 fcase 评估该行时,以下代码会引发错误。

library(data.table)
library(dplyr)
tbl.test <- data.table(x = 0.5*(1:2))
tbl.test[, .(fcase(x < 1, x+1, 
                 default = x))]

tbl.test[, .(case_when(x < 1 ~ x+1, 
                        TRUE ~ x)
             )]

Run Code Online (Sandbox Code Playgroud)

当我以这种方式使用 case_when 时(对于大多数复杂的东西..),我想切换到 fcase,希望能真正提高性能..

有谁知道 fcase 的这种用法到底隐藏在哪里吗?关键是我不能使用表的列作为 fcase 的默认值..

r dplyr data.table

4
推荐指数
1
解决办法
3696
查看次数

data.table高效回收V2

这是这个问题的后续:data.table 高效回收

这里的区别在于,每条线的未来年份数不一定相同..

我经常在 data.table 中使用回收,例如当我需要预测未来几年时。我会重复未来每年的原始数据。

这可能会导致类似的情况:

library(data.table)
dt <- data.table(1:500000, 500000:1, rpois(500000, 240))
dt2 <- dt[, c(.SD, .(year = 1:V3)), by = 1:nrow(dt) ]
Run Code Online (Sandbox Code Playgroud)

但我经常需要处理数百万行,以及比这个玩具示例多得多的列。时间增加..试试这个:

library(data.table)
dt <- data.table(1:5000000, 5000000:1, rpois(5000000, 240))
dt2 <- dt[, c(.SD, .(year = 1:V3)), by = 1:nrow(dt) ]
Run Code Online (Sandbox Code Playgroud)

我的问题是:有没有更有效的方法来达到这个目的?

谢谢你的帮助 !

r recycle data.table

2
推荐指数
1
解决办法
424
查看次数

标签 统计

data.table ×2

r ×2

dplyr ×1

recycle ×1