How to aggregate data in data.frame in R

前端 未结 5 1852
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-10 22:24

I have a large data.frame. The data.frame include a lot of values.

For example:

df <- data.frame(Company = c(\'A\', \'A\', \'B\', \'C\', \'A\', \'         


        
5条回答
  •  -上瘾入骨i
    2020-12-10 23:06

    One option is using data.table

    library(data.table)
    setDT(df)[, c(lapply(.SD[, c(2:3, 5), with = FALSE], mean), 
        .(Education.University = sum(Education.University))), by = Company]
    #   Company      Age    Wages Productivity Education.University
    #1:       A 27.00000 56666.67     102.6667                    2
    #2:       B 28.66667 68333.33     111.6667                    3
    #3:       C 29.00000 53333.33     101.6667                    1
    

    Or with dplyr

    library(dplyr)
    df %>%
       group_by(Company) %>% 
       mutate(Education.University = sum(Education.University)) %>%
       summarise_if(is.numeric, mean)
    # A tibble: 3 x 5
    #  Company      Age    Wages Education.University Productivity
    #                                   
    #1       A 27.00000 56666.67                    2     102.6667
    #2       B 28.66667 68333.33                    3     111.6667
    #3       C 29.00000 53333.33                    1     101.6667
    

提交回复
热议问题