【问题标题】:r- filtering table includes NA linesr- 过滤表包括 NA 行
【发布时间】:2014-12-09 19:24:46
【问题描述】:

我需要过滤一个表:

示例表:

tabla<-data.frame( b=c(4,8, NA,4,12,8,NA), a=c(1))

如果我使用以下内容进行过滤,我会得到:

> nrow(tabla[tabla$b<=7,])
[1] 4

> tabla[tabla$b<=7,]
      b  a
1     4  1
NA   NA NA
4     4  1
NA.1 NA NA

如何在矩阵过滤中排除NA??

【问题讨论】:

    标签: r matrix filter na


    【解决方案1】:

    您可以使用否定的is.na

    tabla[tabla$b <= 7 & !is.na(tabla$b), ]
    #   b a
    # 1 4 1
    # 4 4 1
    

    另一个选项是na.omit。但请注意,这将删除任何列中包含 NA 的所有行。因此,如果您在a 列中有NA,但在b 列中没有,则该行仍将被删除。您可能不希望在此处使用它,但它是处理 NA 值的另一个好功能。

    na.omit(tabla)[na.omit(tabla)$b <= 7, ]
    #   b a
    # 1 4 1
    # 4 4 1
    

    【讨论】:

    • 不应该这样。 na 既不是 7。这样做的目的是什么?
    • 你指的是哪一行?首先,tabla$b &lt;= 7 &amp; !is.na(tabla$b) 基本上表示“tablab 列小于或等于7,而tablab 列不是NA”。
    • 你的回答没问题,我是说R滤镜不应该是这样的。
    猜你喜欢
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 2021-11-29
    • 2012-09-11
    • 2022-07-15
    • 1970-01-01
    • 2017-01-23
    • 2020-10-01
    相关资源
    最近更新 更多