用R中的ID从第一行减去前面的行
我试图创建一个变量,该变量将前一行的日期从第一行的日期中减去一个ID,但当另一个变量等于1时重新开始。以下是我的数据集:用R中的ID从第一行减去前面的行,r,R,我试图创建一个变量,该变量将前一行的日期从第一行的日期中减去一个ID,但当另一个变量等于1时重新开始。以下是我的数据集: data <- data.frame("ID" = c(1,1,1,1,1,1,1,1,2,2,2,2,2,2), "Date" = c("2018-08-07","2018-08-08","2018-08-09","2018-08-09","2018-08-10","2018-08-11","2018-08-11","2018-08-12","2018-08-04",
data <- data.frame("ID" = c(1,1,1,1,1,1,1,1,2,2,2,2,2,2), "Date" = c("2018-08-07","2018-08-08","2018-08-09","2018-08-09","2018-08-10","2018-08-11","2018-08-11","2018-08-12","2018-08-04","2018-08-07","2018-08-07","2018-08-08","2018-08-09","2018-08-10"),"DRSG" = c(1,0,0,0,1,0,0,0,1,0,0,1,0,0))
ID Date DRSG
1 2018-08-07 1
1 2018-08-08 0
1 2018-08-09 0
1 2018-08-09 0
1 2018-08-10 1
1 2018-08-11 0
1 2018-08-11 0
1 2018-08-12 0
2 2018-08-04 1
2 2018-08-07 0
2 2018-08-07 0
2 2018-08-08 1
2 2018-08-09 0
2 2018-08-10 0
非常感谢您的帮助 首先在按ID分组的原始DRSG列上创建一个累积和。然后,我们可以将此新列与原始ID一起用作我们的组。在这里,我们首先利用dplyr::进行减法运算
library(tidyverse)
data %>%
mutate(Date = as.Date(Date)) %>%
group_by(ID) %>%
mutate(increment_DRSG = cumsum(DRSG)) %>%
group_by(ID, increment_DRSG) %>%
mutate(days = Date - first(Date))
library(tidyverse)
data %>%
mutate(Date = as.Date(Date)) %>%
group_by(ID) %>%
mutate(increment_DRSG = cumsum(DRSG)) %>%
group_by(ID, increment_DRSG) %>%
mutate(days = Date - first(Date))