r-如何标记日期序列中的第一个和最后一个日期


data<-data.frame(
ID=c(1,1,1,1,2,2,2,3,3,3,3,3),
Date=c("date1", "date2","date3","date4","date1", "date2","date3","date1",
"date2","date3","date4","date5"))

我为每个人都订了一个日期系列。我想在每个单独的f的第一个日期之前、最后一个日期l的前面和其他日期o的前面标记这样的表格:

ID  Date TypeOfDate
1   1 date1          f
2   1 date2          o
3   1 date3          o
4   1 date4          l
5   2 date1          f
6   2 date2          o
7   2 date3          l
8   3 date1          f
9   3 date2          o
10  3 date3          o
11  3 date4          o
12  3 date5          l

这将是我使用tidyverse的方法。

library(tidyverse)
data<-data.frame(
ID=c(1,1,1,1,2,2,2,3,3,3,3,3),
Date=c("date1", "date2","date3","date4","date1", "date2","date3","date1",
"date2","date3","date4","date5"))
data %>% 
group_by(ID) %>% 
mutate(row_id=row_number()) %>% 
mutate(TypeOfDate=case_when(row_id==max(row_number()) ~ "l",
row_id==min(row_number()) ~ "f",
TRUE ~ as.character("o")))
#> # A tibble: 12 x 4
#> # Groups:   ID [3]
#>       ID Date  row_id TypeOfDate
#>    <dbl> <chr>  <int> <chr>     
#>  1     1 date1      1 f         
#>  2     1 date2      2 o         
#>  3     1 date3      3 o         
#>  4     1 date4      4 l         
#>  5     2 date1      1 f         
#>  6     2 date2      2 o         
#>  7     2 date3      3 l         
#>  8     3 date1      1 f         
#>  9     3 date2      2 o         
#> 10     3 date3      3 o         
#> 11     3 date4      4 o         
#> 12     3 date5      5 l

由reprex包(v0.3.0(创建于2020-12-04

相关内容

  • 没有找到相关文章

最新更新