R: How to calculate mean for each row with missing values using dplyr

前端 未结 3 1032
遇见更好的自我
遇见更好的自我 2021-01-06 19:20

I want to calculate means over several columns for each row in my dataframe containing missing values, and place results in a new column called \'means.\' Here\'s my datafra

3条回答
  •  死守一世寂寞
    2021-01-06 20:22

    Regarding the error in OP's code, we can use the concatenate function c to get those elements as a single vector and then do the mean as mean can take only a single argument.

    df %>%
        rowwise() %>% 
        mutate(means = mean(c(A, B, C), na.rm = TRUE))
    #     A     B     C    means 
    #        
    #1     3     0     9 4.000000
    #2     4     6    NA 5.000000
    #3     5     8     1 4.666667
    

    Also, we can use rowMeans with transform

    transform(df, means = rowMeans(df, na.rm = TRUE))
    #  A B  C    means
    #1 3 0  9 4.000000
    #2 4 6 NA 5.000000
    #3 5 8  1 4.666667
    

    Or using data.table

    library(data.table)
    setDT(df)[, means := rowMeans(.SD, na.rm = TRUE)]
    

提交回复
热议问题