NA/NaN / Inf в данных.таблица 1.9.2

после проверки новой функции данных.таблица 1.9.2, я не совсем ясно о новой функции манипуляции NA/NaN/Inf.

новость:

NA, NaN, +Inf и-Inf теперь считаются различными значениями, могут быть в ключах, могут быть объединены и могут быть сгруппированы. данные.таблица определяет: NA

Я не знаю, что означает "может быть присоединен и может быть сгруппирован"

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

теперь у нас есть NAs в обоих столбцах A и Б

но я немного потерял, как действовать, и какова цель этой новой функции. Не могли бы вы привести пример, чтобы проиллюстрировать это?

Спасибо большое!

1 ответов


в предыдущих версиях data.table NA, NaN,Inf значения могут существовать в ключе, но вы не могли join или используйте двоичное сканирование, чтобы выбрать эти строки в соответствии с другими значениями ключа.

посмотреть выберите NA в данных.таблица в R и данные.подстановка таблицы NaN не работает для примеров вопросов SO, которые касаются этих проблем (и вы можете проследить историю через ответы на запросы функций в данных.таблица проект)

сейчас, в 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