【问题标题】:using nested group_by in dplyr在 dplyr 中使用嵌套的 group_by
【发布时间】:2015-12-08 20:34:10
【问题描述】:

给出以下玩具示例:

set.seed(200)
h<-data.frame(T1=sample(0:100,size = 20),ID=sample(c("A","B","C","D"),size=20,replace=T),yr=sample(c(2006:2010),size = 20,replace=T))

我该怎么做

  • 计算 ID 每年拥有超过 1 个实例的比例
  • 创建一个变量,每个 ID 和年份的 T1 的每个升序值都会递增
  • 从 T1(1) 中减去每个实例 T1(2),从 T1(2) 中减去 T1(3),等等

我想出了第一个:

h %>% group_by(yr,ID) %>% summarise(n=n()) %>% summarise(n2=sum(n>1),n3=n(),n4=n2/n3)

现在,对于最后两个问题 - 这是所需的输出:

 T1 ID   yr      Inc.var   diff
1  92  A 2006        1       6
2  98  A 2006        2       0
3  41  B 2006        1       0 
4  26  C 2006        1       71
5  97  C 2006        2       0
6  11  D 2006        1       56
7  67  D 2006        2       0
8   9  B 2008        1       44
9  53  B 2008        2       4
10 57  B 2008        3       19
11 76  B 2008        4       0
12 33  D 2008        etc    etc
13 48  A 2009
14 58  A 2009
15 99  A 2009
16 52  B 2009
17 80  B 2009
18 13  B 2010
19 64  B 2010
20 21  C 2010

【问题讨论】:

  • 如果您为样本输入提供了所需的输出,将会有所帮助。最好一次只关注一个问题,并具体说明您面临的编程问题。展示您为自己解决问题所做的任何尝试,并说明它们为什么不起作用。

标签: r dplyr


【解决方案1】:

这是我解决最后两个问题的方法:

j <- h %>% group_by(ID,yr) %>% arrange(T1) %>% mutate(diff=lead(T1)-T1,inc.var=seq(length(T1))) %>% arrange(yr) 

【讨论】:

    猜你喜欢
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 2017-07-12
    相关资源
    最近更新 更多