猿问

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

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

我有一个大的数据表,它的200 K行和200列中散布了许多缺失的值。我希望尽可能高效地将这些NA值重新编码到零。

我看到两种选择:
1:转换为data.framework,并使用像这样
2:某种很酷的data.table子设置命令

我会很高兴得到一个非常有效的1类型的解决方案,转换为data.framework,然后返回到data.table不会花费太长时间。


神不在的星期二
浏览 637回答 3
3回答

料青山看我应如是

以下是使用NAToUnknown在gdata包裹。我使用Andrie的解决方案创建了一个巨大的数据表,还包括了与Andrie解决方案的时间比较。# CREATE DATA TABLEdt1 = create_dt(2e5, 200, 0.1)# FUNCTIONS TO SET NA TO ZERO&nbsp; &nbsp;f_gdata&nbsp; = function(dt, un = 0) gdata::NAToUnknown(dt, un)f_Andrie = function(dt) remove_na(dt)# COMPARE SOLUTIONS AND TIMESsystem.time(a_gdata&nbsp; <- f_gdata(dt1))user&nbsp; system elapsed&nbsp;4.224&nbsp; &nbsp;2.962&nbsp; &nbsp;7.388&nbsp;system.time(a_andrie <- f_Andrie(dt1))&nbsp;user&nbsp; system elapsed&nbsp;4.635&nbsp; &nbsp;4.730&nbsp; 20.060&nbsp;identical(a_gdata, g_andrie)&nbsp;&nbsp;TRUE
随时随地看视频慕课网APP
我要回答