计算另一个变量中特定值的Means变量

时间:2014-12-25 12:30:47

标签: r group-by frame mean

我想在另一个名为period的变量中计算1-7中每个值的平均年龄。

这就是我的数据:

work1 <- read.table(header=T, text="ID  dead    age gender  inclusion_year  diagnosis   surv    agrp    period
87  0   25  2   2006    1   2174    1   5
396 0   19  2   2003    1   3077    1   3
446 0   23  2   2003    1   3144    1   3
497 0   19  2   2011    1   268 1   7
522 1   57  2   1999    1   3407    2   1
714 0   58  2   2003    1   3041    2   3
741 0   27  2   2004    1   2587    1   4
767 0   18  1   2008    1   1104    1   6
786 0   36  1   2005    1   2887    3   4
810 0   25  1   1998    1   3783    4   2")

这是具有超过1500个观察值的数据的子集

这就是我想要实现的目标:

  sim <- read.table(header=T, text="Period  diagnosis   dead    surv    age
    1   1   50  50000   35.5
    2   1   80  70000   40.3
    3   1   100 80000   32.8
    4   1   120 100000  39.8
    5   1   140 1200000 28.7
    6   1   150 1400000 36.2
    7   1   160 1600000 37.1")

在这个数据集中,我想按期间和诊断分组,而所有死亡(死亡)和幸存(以天为单位的存活时间)总结在时间段内。我还想了解每个时期的年龄平均值。

已经尝试了一切,仍然无法创建我正在努力的数据集。 感谢所有帮助!

1 个答案:

答案 0 :(得分:4)

您可以尝试data.table

library(data.table)
as.data.table(work1)[, .(dead_sum=sum(dead),
                         surv_sum=sum(surv),
                         age_mean=mean(age)), keyby=.(period, diagnosis)]

dplyr

library(dplyr)
work1 %>% group_by(period, diagnosis) %>%
  summarise(dead_sum=sum(dead), surv_sum=sum(surv), age_mean=mean(age))

# result
   period diagnosis dead_sum surv_sum age_mean
1:      1         1        1     3407 57.00000
2:      2         1        0     3783 25.00000
3:      3         1        0     9262 33.33333
4:      4         1        0     5474 31.50000
5:      5         1        0     2174 25.00000
6:      6         1        0     1104 18.00000
7:      7         1        0      268 19.00000