Add a column with count of NAs and Mean

前端 未结 3 1209
南笙
南笙 2020-11-30 12:46

I have a data frame and I need to add another column to it which shows the count of NAs in all the other columns for that row and also the mean of the non-NA values. I think

相关标签:
3条回答
  • 2020-11-30 12:50

    You can try this:

    #Find the row mean and add it to a new column in the dataframe
    df1$Mean <- rowMeans(df1, na.rm = TRUE)
    
    #Find the count of NA and add it to a new column in the dataframe
    df1$CountNa <- rowSums(apply(is.na(df1), 2, as.numeric))
    
    0 讨论(0)
  • 2020-11-30 12:55
    library(dplyr)
    
    count_na <- function(x) sum(is.na(x))    
    
    df1 %>%
      mutate(means = rowMeans(., na.rm = T),
             count_na = apply(., 1, count_na))
    
    #### ANSWER FOR RADEK ####
    elected_cols <- c('b', 'c')
    
    df1 %>%
      mutate(means = rowMeans(.[elected_cols], na.rm = T),
             count_na = apply(.[elected_cols], 1, count_na))
    
    0 讨论(0)
  • 2020-11-30 13:11

    As mentioned here https://stackoverflow.com/a/37732069/2292993

    df1 <- data.frame(a = 1:5, b = c(1,2,NA,4,NA), c = c(NA,2,3,NA,NA))
    
    df1 %>%
      mutate(means = rowMeans(., na.rm = T),
             count_na = rowSums(is.na(.)))
    

    to work on selected cols (the example here is for col a and col c):

    df1 %>%
      mutate(means = rowMeans(., na.rm = T),
           count_na = rowSums(is.na(select(.,one_of(c('a','c'))))))
    
    0 讨论(0)
提交回复
热议问题