在大型data.table中替換NAS的最快方法我有一個大的數(shù)據(jù)表,它的200 K行和200列中散布了許多缺失的值。我希望盡可能高效地將這些NA值重新編碼到零。我看到兩種選擇:1:轉(zhuǎn)換為data.framework,并使用像這樣2:某種很酷的data.table子設(shè)置命令我會很高興得到一個非常有效的1類型的解決方案,轉(zhuǎn)換為data.framework,然后返回到data.table不會花費(fèi)太長時間。
3 回答

料青山看我應(yīng)如是
TA貢獻(xiàn)1772條經(jīng)驗 獲得超8個贊
以下是使用NAToUnknown在gdata包裹。我使用Andrie的解決方案創(chuàng)建了一個巨大的數(shù)據(jù)表,還包括了與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 關(guān)注
- 669 瀏覽
添加回答
舉報
0/150
提交
取消