【问题标题】:Counting observations according to the number of variables missing根据缺失变量的数量计算观测值
【发布时间】:2018-09-26 21:20:08
【问题描述】:

我想根据丢失的变量数来计算数据框的行数。因此,例如在下面的数据框中,我希望代码返回列表:

3, 5, 1, 1, 0

因为 3 行没有缺失变量,5 行缺失 1 个变量,1 行缺失 2 个变量,1 行缺失 3 个变量,0 行缺失 4 个变量:

   v1 v2 v3 v4
1   1  1  1  1
2  NA NA  1  1
3   1  1 NA  1
4   1  1  1  1
5  NA  1  1  1
6  NA  1  1  1
7   1  1  1 NA
8  NA  1  1  1
9   1  1  1  1
10  1 NA NA NA

这是可以在 R 中加载的示例数据:

dt <- structure(list(v1 = c(1, NA, 1, 1, NA, NA, 1, NA, 1, 1), v2 = c(1, NA, 1, 1, 1, 1, 1, 1, 1, NA), v3 = c(1, 1, NA, 1, 1, 1, 1, 1, 1, NA), v4 = c(1, 1, 1, 1, 1, 1, NA, 1, 1, NA)), .Names = c("v1", "v2", "v3", "v4"), row.names = c(NA, -10L), class = "data.frame")

我已经可以通过逐行循环遍历数据帧并增加缺失变量数量的计数器来做到这一点,但是在大型数据帧上它非常慢,所以我希望有一种巧妙的方法来做到这一点?

【问题讨论】:

    标签: r


    【解决方案1】:
    table(rowSums(is.na(dt)))
    #0 1 2 3 
    #3 5 1 1 
    

    如果你真的需要最后一个 0(四个NAs):

    tabulate(factor(rowSums(is.na(dt))), nbins = ncol(dt)+1)
    #[1] 3 5 1 1 0
    

    【讨论】:

    • 另一种处理缺失“4”类别的方法是在使用table之前指定因子水平:row_results = factor(rowSums(is.na(dt)), levels=seq(0, ncol(dt))); table(row_results)
    【解决方案2】:

    一种更符合潮流的方式是:

    library(tidyverse)
    
    dt <- structure(list(v1 = c(1, NA, 1 , 1, NA, NA, 1 , NA, 1, 1 ), 
                         v2 = c(1, NA, 1 , 1, 1 , 1 , 1 , 1 , 1, NA), 
                         v3 = c(1, 1 , NA, 1, 1 , 1 , 1 , 1 , 1, NA), 
                         v4 = c(1, 1 , 1 , 1, 1 ,  1, NA, 1 , 1, NA)
                         ),
                     .Names = c("v1", "v2", "v3", "v4"), row.names = c(NA, -10L), class = "data.frame")
    
    dt <- as_tibble(dt)
    

    使用 drop_na(),tidyverse-y 的方式

    dt %>% 
      drop_na()
    

    使用“stats”包仅过滤“完整案例/行”

    dt %>% 
      filter(complete.cases(v1, v2, v3, v4))
    

    使用“na.omit”(不是 tidyverse 函数)

    dt %>% 
      na.omit()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多