【问题标题】:How to count complete observations for specific variables in a data.frame [duplicate]如何计算data.frame中特定变量的完整观察值[重复]
【发布时间】:2020-11-02 23:30:08
【问题描述】:

我有一个data.frame,其中包含数百个变量,其中包含由 NA 表示的缺失值。总共有 571 个观测值。我只对data.frame 中的 20 个变量感兴趣。换句话说,我想将完整的观察定义为在所有 20 个感兴趣的变量中都有数据的任何观察。

解决此问题的一种方法是运行线性回归,这将删除任何具有缺失值的观察值。 IE。它会声明如下:

(196 observations deleted due to missingness)

这将使我能够推断出我的样本量等于 571 减去 196。但必须有更好的方法来做到这一点。有什么想法吗?

提前谢谢你!

【问题讨论】:

    标签: r


    【解决方案1】:

    如果您想简单地删除任何变量中包含 NA 的任何观测值,请使用na.omit()。如果您只想选择部分变量,请先使用subset() 对其进行子集化。

    例子:

    # some data
    df <- data.frame(
      a = c(1,2,3,4,5,NA),
      b = c(NA,2,3,4,5,6),
      c = c(NA,NA,3,4,5,6)
    )
    
    # omit rows with NAs
    na.omit(df)
    #>   a b c
    #> 3 3 3 3
    #> 4 4 4 4
    #> 5 5 5 5
    
    # use only "a" and "b" variables
    na.omit(subset(df, select = c("a", "b")))
    #>   a b
    #> 2 2 2
    #> 3 3 3
    #> 4 4 4
    #> 5 5 5
    

    reprex package (v0.3.0) 于 2020 年 7 月 13 日创建

    你可以用nrow()统计观察次数:

    nrow(na.omit(df))
    #> [1] 3
    

    【讨论】:

    • 太棒了,谢谢!对于其他人,我的最终代码为nrow(na.omit(subset(finaldata, select = c("child_age96", "log3Tblood"))))
    • @goose144 太好了,我很高兴它有效!非常感谢您对其他人的反馈!
    【解决方案2】:

    使用complete.cases:

    df <- data.frame(
      a = c(1,NA,2,NA,3),
      b = c(NA,5,3,5,6),
      c = c(NA,NA,3,5,NA)
    )
    
    df[complete.cases(df),]
    nrow(df[complete.cases(df),])
    

    输出

     a b c
    3 2 3 3
    
    1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-27
      • 1970-01-01
      • 1970-01-01
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多