代码之家  ›  专栏  ›  技术社区  ›  Chris

如何简单地用nas-r计算行数[重复]

  •  2
  • Chris  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我试图用整个df的na来计算行数,因为我想用na计算的行数占df总行数的百分比。

    我已经看过这篇文章: Determine the number of rows with NAs 但它只显示了特定范围的列。

    2 回复  |  直到 6 年前
        1
  •  3
  •   De Novo    6 年前

    TL;博士:顺排,你会想要的 sum(!complete.cases(DF)) 或者,等价地, sum(apply(DF, 1, anyNA))

    NA 数据帧中的值:

    TRUE FALSE 其他任何地方。对于基本数据集 airquality

    is.na(airquality)
    

    不适用

    sum(is.na(airquality))
    # [1] 44
    

    您可以查看

    head(rowSums(is.na(airquality)))
    # [1] 0 0 0 0 2 1
    colSums(is.na(airquality))
    #   Ozone Solar.R    Wind    Temp   Month     Day 
     37       7       0       0       0       0 
    

    anyNA() 代替 is.na()

    # by row
    head(apply(airquality, 1, anyNA))
    # [1] FALSE FALSE FALSE FALSE  TRUE  TRUE
    sum(apply(airquality, 1, anyNA))
    # [1] 42
    
    
    # by column
    head(apply(airquality, 2, anyNA))
    #   Ozone Solar.R    Wind    Temp   Month     Day 
    #    TRUE    TRUE   FALSE   FALSE   FALSE   FALSE
    sum(apply(airquality, 2, anyNA))
    # [1] 2
    

    complete.cases()

    sum(!complete.cases(airquality))
    # [1] 42
    
        2
  •  1
  •   Thomas Guillerme    6 年前

    从例子中 here

    DF <- read.table(text="     col1   col2    col3
     1    23    17      NA
     2    55    NA      NA
     3    24    12      13
     4    34    23      12", header=TRUE)
    

    (which_nas <- apply(DF, 1, function(X) any(is.na(X))))
    #    1     2     3     4 
    # TRUE  TRUE FALSE FALSE 
    

    然后计算它们,识别它们或得到比率:

    ## Identify them
    which(which_nas)
    # 1 2 
    # 1 2 
    
    ## Count them
    length(which(which_nas))
    #[1] 2
    
    ## Ratio
    length(which(which_nas))/nrow(DF)
    #[1] 0.5