Calculate group mean (or other summary stats) and assign to original data

前端 未结 4 1418
自闭症患者
自闭症患者 2020-11-21 10:15

I want to calculate mean (or any other summary statistics of length one, e.g. min, max, length, sum) of a nu

4条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-11-21 10:47

    Here is another option using base functions aggregate and merge:

    merge(x, aggregate(value ~ group, data = x, mean), 
         by = "group", suffixes = c("", "mean"))
    
      group id value.x value.y
    1     a  1      10      15
    2     a  2      20      15
    3     b  3     100     150
    4     b  4     200     150
    

    You can get "better" column names with suffixes:

    merge(x, aggregate(value ~ group, data = x, mean), 
         by = "group", suffixes = c("", ".mean"))
    
    
      group id value value.mean
    1     a  1    10         15
    2     a  2    20         15
    3     b  3   100        150
    4     b  4   200        150
    

提交回复
热议问题