【发布时间】:2018-07-10 22:14:46
【问题描述】:
提前感谢您的帮助。假设我有这个数据框。
# install.packages(c("tidyverse"), dependencies = TRUE)
require(tidyverse)
test <- tibble(id=c(1,1,1,2,2,2),
event=c("dog","cat","mouse","cat","mouse","dog"),
quarter=(c(1,5,8,4,5,9)))
test
#> # A tibble: 6 x 3
#> id event quarter
#> <dbl> <chr> <dbl>
#> 1 1 dog 1
#> 2 1 cat 5
#> 3 1 mouse 8
#> 4 2 cat 4
#> 5 2 mouse 5
#> 6 2 dog 9
我想使用dplyr 来结束以下数据框,这样对于每个给定的id,我知道自第一个事件以来已经过去的quarters 的数量。
test %>% cbind(quarterFrom = c(0,5,8,0,1,5)) %>% as_tibble()
#> # A tibble: 6 x 4
#> id event quarter quarterFrom
#> <dbl> <chr> <dbl> <dbl>
#> 1 1 dog 1 0
#> 2 1 cat 5 5
#> 3 1 mouse 8 8
#> 4 2 cat 4 0
#> 5 2 mouse 5 1
#> 6 2 dog 9 5
您可以看到,对于id == 1,第一季度是1,它收到quarterFrom == 0。但是对于id == 2,第一季度是4,也应该收到quarterFrom == 0。从那时起给定id 的所有其他条目是自quarterFrom == 0 以来经过的季度数。
再次感谢。
【问题讨论】:
-
您的输出不一致。例如,第 2 行是否应该为 Quarter=5,QuarterFrom=4?
-
嘿 - 对计数混乱感到抱歉!谢谢@Eric Fail