在大型data.table中替换NAS的最快方法我有一个大的数据表,它的200 K行和200列中散布了许多缺失的值。我希望尽可能高效地将这些NA值重新编码到零。我看到两种选择:1:转换为data.framework,并使用像这样2:某种很酷的data.table子设置命令我会很高兴得到一个非常有效的1类型的解决方案,转换为data.framework,然后返回到data.table不会花费太长时间。
3 回答
蛊毒传说
TA贡献1895条经验 获得超3个赞
以下是使用NAToUnknown在gdata包裹。我使用Andrie的解决方案创建了一个巨大的数据表,还包括了与Andrie解决方案的时间比较。
# CREATE DATA TABLE
dt1 = create_dt(2e5, 200, 0.1)
# FUNCTIONS TO SET NA TO ZERO
f_gdata = function(dt, un = 0) gdata::NAToUnknown(dt, un)
f_Andrie = function(dt) remove_na(dt)
# COMPARE SOLUTIONS AND TIMES
system.time(a_gdata <- f_gdata(dt1))
user system elapsed
4.224 2.962 7.388
system.time(a_andrie <- f_Andrie(dt1))
user system elapsed
4.635 4.730 20.060
identical(a_gdata, g_andrie)
TRUE
- 3 回答
- 0 关注
- 549 浏览
添加回答
举报
0/150
提交
取消