Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用R中的ID从第一行减去前面的行_R - Fatal编程技术网

用R中的ID从第一行减去前面的行

用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",

我试图创建一个变量,该变量将前一行的日期从第一行的日期中减去一个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","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))