繁体   English   中英

在 dplyr 中使用嵌套的 group_by

[英]using nested group_by in dplyr

给出以下玩具示例:

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 的每个升序值递增
  • 对于每个 ID,从 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

以下是我如何解决最后两个问题:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM