Calculating mean when 2 conditions need met in R

后端 未结 2 2124
刺人心
刺人心 2020-12-21 01:47

I am trying to get the mean age of males and females with various health conditions from my data frame.

AgeAnalyisi$Age     num
AgeAnalyisi$Gout        logic         


        
相关标签:
2条回答
  • 2020-12-21 01:52

    Here is a data.table solution

    library(data.table)
    AgeAnalyisis.DT <- data.table(AgeAnalyisis)
    
    AgeAnalyisis.DT[, lapply(.SD[, !"Age", with=FALSE], function(x) mean(Age[x]))
                    , by=Gender]
    
       Gender     Gout Arthritis Vasculitis
    1:      F 54.58333  52.00000   55.81818
    2:      M 50.09091  52.69231   52.40000
    


    If you'd like it transposed, you can use:

    # Save the results
    res <- AgeAnalyisis.DT[, lapply(.SD[, !"Age", with=FALSE], function(x) mean(Age[x]))
                           , by=Gender]
    # Transpose, and assign Gender as column names
    results <- t(res[,!"Gender", with=FALSE])
    colnames(results) <- res[, Gender]
    
    results
    #                   F        M
    # Gout       58.30263 57.50328
    # Arthritis  66.00217 67.91978
    # Vasculitis 59.76155 57.86556
    
    0 讨论(0)
  • 2020-12-21 02:05

    You could try the aggregate function:

    df <- data.frame(value=1:10, letter=rep(LETTERS[1:2], each=5), group=rep(c(1,2), times=5))
    aggregate(value ~ letter * group, data=df, FUN=mean)
    #  letter group value
    #1      A     1     3
    #2      B     1     8
    #3      A     2     3
    #4      B     2     8
    
    0 讨论(0)
提交回复
热议问题