【问题标题】:NA/NaN/Inf in data.table 1.9.2data.table 1.9.2 中的 NA/NaN/Inf
【发布时间】:2014-03-03 02:05:51
【问题描述】:

查看data.table 1.9.2的新特性后,我对NA/NaN/Inf的操作新特性不是很清楚。

新闻:

NA、NaN、+Inf 和 -Inf 现在被视为不同的值,可以在键中,可以连接并可以分组。 data.table 定义:NA

不知道“可以加入,可以分组”是什么意思

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

现在我们在 A 列和 B 列中都有 NA,

但我不知道如何进行,以及这个新功能的目的是什么。你能举个例子来说明这一点吗?

非常感谢!

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    data.table 的早期版本中,NA, NaN,Inf 值可能存在于键中,但您不能join 或使用二进制扫描以与其他键值一致的方式选择这些行。

    Select NA in a data.table in Rdata.table subsetting by NaN doesn't work 用于处理这些问题的 SO 问题示例(您可以通过 data.table 项目中对功能请求的回答来追踪历史)

    现在,在 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
    

    【讨论】:

    • 太棒了!非常感谢@mnel!
    • 有个小问题,有没有办法使用 .() 方法同时选择“NaN”和“Inf”?谢谢!
    • @BigChao。阅读 data.table 帮助文件。与选择任何其他两个值的方式相同。
    猜你喜欢
    • 1970-01-01
    • 2013-03-24
    • 2011-11-23
    • 2023-03-05
    • 2014-03-28
    • 2021-12-14
    • 2018-07-03
    • 1970-01-01
    • 2017-10-07
    相关资源
    最近更新 更多