[英]R - Incrementing variable by grouping variables, based on changing column conditions
我從“開始”開始
ID <- c("A", "A", "A", "B", "B", "C")
Lab <- c("5", "10", "15", "20", "5", "10")
Date <- as.Date(c("01/01/2020",
"01/01/2020",
"01/02/2020",
"01/01/2020",
"01/02/2020",
"01/05/2020"), format="%m/%d/%Y")
Start <- data.frame(ID, Lab, Date)
Start
#> ID Lab Date
#> 1 A 5 2020-01-01
#> 2 A 10 2020-01-01
#> 3 A 15 2020-01-02
#> 4 B 20 2020-01-01
#> 5 B 5 2020-01-02
#> 6 C 10 2020-01-05
並且需要到達“完成”。
Day <- c(1, 1, 2, 1, 2, 1)
Finish <- data.frame(ID, Lab, Date, Day)
Finish
#> ID Lab Date Day
#> 1 A 5 2020-01-01 1
#> 2 A 10 2020-01-01 1
#> 3 A 15 2020-01-02 2
#> 4 B 20 2020-01-01 1
#> 5 B 5 2020-01-02 2
#> 6 C 10 2020-01-05 1
每個 ID 每天都會有多個實驗室,跨越數天。 我需要一個新變量“Day”,它反映繪制實驗室的日期,每次日期更改時遞增 1,並在患者 ID 更改時將日期重置為“1”。
由代表 package (v0.3.0) 於 2020 年 4 月 16 日創建
我們可以在邏輯向量上使用cumsum
在按“ID”分組后創建“日”
library(dplyr)
Start %>%
group_by(ID) %>%
mutate(Day = cumsum(!duplicated(Date)))
# A tibble: 6 x 4
# Groups: ID [3]
# ID Lab Date Day
# <fct> <fct> <date> <int>
#1 A 5 2020-01-01 1
#2 A 10 2020-01-01 1
#3 A 15 2020-01-02 2
#4 B 20 2020-01-01 1
#5 B 5 2020-01-02 2
#6 C 10 2020-01-05 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.