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