2014-03-03 101 views
6

在檢查data.table 1.9.2的新特性之後,我不太清楚NA/NaN/Inf操作的新特性。NA/NaN/Inf in data.table 1.9.2

消息:

NA,NaN時,+ INF,然後-Inf現在被認爲是不同的值,可以是鍵,可以連接到,並且可以進行分組。 data.table定義:NA < NaN的< -Inf

我不知道這是什麼意思由「可連接並可以分組」

DT <- data.table(A=c(NA,NA,1:3), B=c("a",NA,letters[1:3])) 

現在我們都有來港列A和B,

但是我失去了一點如何繼續,以及這個新功能的目的是什麼。你能舉一個例子來說明這一點嗎?

非常感謝!

回答

11

以前版本的data.tableNA, NaN,Inf值可能存在於密鑰中,但您不能使用join或使用二進制掃描以與其他鍵值一致的方式選擇這些行。

爲解決這些問題(你可以通過追蹤答案的歷史特徵data.table項目範圍內的請求)的SO問題的例子見 Select NA in a data.table in Rdata.table subsetting by NaN doesn't work現在

,在1.9.2(和以上)這樣的事情將起作用。

# an example data set 
DT <- data.table(A = c(NA,NaN,Inf,Inf,-Inf,NA,NaN,1,2,3), 
       B =letters[1:10], key = 'A') 
# selection using binary search 
DT[.(Inf)] 
#  A B 
# 1: Inf c 
# 2: Inf d 
DT[.(-Inf)] 
#  A B 
# 1: -Inf e 
# note that you need to use the right kind of NA 
DT[.(NA_real_)] 
#  A B 
# 1: NA a 
# 2: NA f 
DT[.(NaN)] 
#  A B 
# 1: NaN b 
# 2: NaN g 
# grouping works 
DT[,.N,by=A] 
#  A N 
# 1: NA 2 
# 2: NaN 2 
# 3: -Inf 1 
# 4: 1 1 
# 5: 2 1 
# 6: 3 1 
# 7: Inf 2 
+0

太棒了!非常感謝@mnel! – Bigchao

+0

還有一個小問題,有沒有辦法使用。()方法同時選擇「NaN」和「Inf」?謝謝! – Bigchao

+1

@BigChao。閱讀data.table幫助文件。與選擇其他兩個值的方式相同。 – mnel