为了账号安全,请及时绑定邮箱和手机立即绑定

在大型data.table中替换NAS的最快方法

在大型data.table中替换NAS的最快方法

神不在的星期二 2019-07-19 15:15:58
在大型data.table中替换NAS的最快方法我有一个大的数据表,它的200 K行和200列中散布了许多缺失的值。我希望尽可能高效地将这些NA值重新编码到零。我看到两种选择:1:转换为data.framework,并使用像这样2:某种很酷的data.table子设置命令我会很高兴得到一个非常有效的1类型的解决方案,转换为data.framework,然后返回到data.table不会花费太长时间。
查看完整描述

3 回答

?
料青山看我应如是

TA贡献1772条经验 获得超7个赞

以下是使用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


查看完整回答
反对 回复 2019-07-19
  • 3 回答
  • 0 关注
  • 598 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信