请参阅r中另一列的下一行

请参阅r中另一列的下一行,r,R,我想根据以下信息创建一列“结束”时间的时间 case<-c(3,3,3,57,57,57,57,9,9,9) a<-c(12,15,20,12,14,15,17,14,16,19) c<-c(25,25,25,21,21,21,21,24,24,24) data<-data.frame(case,a,c) case a c 1 3 12 25 2 3 15 25 3 3 20 25 4 57 12 21 5 57 14 2

我想根据以下信息创建一列“结束”时间的时间

case<-c(3,3,3,57,57,57,57,9,9,9)
a<-c(12,15,20,12,14,15,17,14,16,19)
c<-c(25,25,25,21,21,21,21,24,24,24)

data<-data.frame(case,a,c)

   case  a  c
1     3 12 25
2     3 15 25
3     3 20 25
4    57 12 21
5    57 14 21
6    57 15 21
7    57 17 21
8     9 14 24
9     9 16 24
10    9 19 24
本质上,[列b第1行]是[列a第2行]-1,具体视情况而定

我的第一步是按(case)将_分组,然后我将创建一个d的伪列,它是a-1,并尝试匹配(),但我不确定如何引用不同的行


b第一步是确定的,然后只需创建新列,该列是列(a-1)的前导,默认值(最后一个值)等于列c的最后一个值

library(dplyr)
data %>% 
  group_by(case) %>% 
  mutate(b = lead(a-1, default = last(c))) %>% 
  ungroup()

    case     a     c     b
   <dbl> <dbl> <dbl> <dbl>
 1     3    12    25    14
 2     3    15    25    19
 3     3    20    25    25
 4    57    12    21    13
 5    57    14    21    14
 6    57    15    21    16
 7    57    17    21    21
 8     9    14    24    15
 9     9    16    24    18
10     9    19    24    24
库(dplyr)
数据%>%
组别(个案)%>%
变异(b=领先(a-1,默认值=最后(c))%>%
解组()
案例a c b
1     3    12    25    14
2     3    15    25    19
3     3    20    25    25
4    57    12    21    13
5    57    14    21    14
6    57    15    21    16
7    57    17    21    21
8     9    14    24    15
9     9    16    24    18
10     9    19    24    24

第一步是确定的,然后只需创建新列,该列是列(a-1)的前导,默认值(最后一个值)等于列c的最后一个值

library(dplyr)
data %>% 
  group_by(case) %>% 
  mutate(b = lead(a-1, default = last(c))) %>% 
  ungroup()

    case     a     c     b
   <dbl> <dbl> <dbl> <dbl>
 1     3    12    25    14
 2     3    15    25    19
 3     3    20    25    25
 4    57    12    21    13
 5    57    14    21    14
 6    57    15    21    16
 7    57    17    21    21
 8     9    14    24    15
 9     9    16    24    18
10     9    19    24    24
库(dplyr)
数据%>%
组别(个案)%>%
变异(b=领先(a-1,默认值=最后(c))%>%
解组()
案例a c b
1     3    12    25    14
2     3    15    25    19
3     3    20    25    25
4    57    12    21    13
5    57    14    21    14
6    57    15    21    16
7    57    17    21    21
8     9    14    24    15
9     9    16    24    18
10     9    19    24    24
Base R

do.call(rbind,
  by(data,list(data$case),function(x){
    cbind(
      x,
      "b"=c(tail(x$a,-1)-1,x$c[1])
    )
  })
)

     case  a  c  b
3.1     3 12 25 14
3.2     3 15 25 19
3.3     3 20 25 25
9.8     9 14 24 15
9.9     9 16 24 18
9.10    9 19 24 24
57.4   57 12 21 13
57.5   57 14 21 14
57.6   57 15 21 16
57.7   57 17 21 21
基尔


倒数第二个b值应该是18吗?倒数第二个b值应该是18吗?