如何根据R中的先前值+值其他列填充列
How to fill column based on previous value + value other column in R
我想根据列本身的先前值(其中第一个值我设置为 1)和事件的值填充一个新列。
test_model
Obs event enum
1056 1 1
1059 1 NA
1070 0 NA
1054 1 NA
1034 0 NA
这应该变成:
Obs event enum
1056 1 1
1059 1 2
1070 0 2
1054 1 3
1034 0 3
到目前为止,我已经尝试过 lag()
test_model$enum <- mutate(test_model, enum = (lag(enum) + event))
但是,这会导致列中充满 test_model (Obs) 中不同列的观察结果。
Obs event enum
1056 1 1056
1059 1 1059
1070 0 1070
1054 1 1054
1034 0 1034
知道这是怎么发生的吗&
我应该怎样对待我的 objective?
我认为您正在寻找 cumsum() 函数。
test_model <- data.frame(Obs = c(1056,1059,1070,1054,1034),
event = c(1,1,0,1,0))
test_model$enum <- cumsum(test_model$event)
#Or using the tidyverse
test_model <- test_model %>% mutate(enum = cumsum(event))
我想根据列本身的先前值(其中第一个值我设置为 1)和事件的值填充一个新列。
test_model
Obs event enum
1056 1 1
1059 1 NA
1070 0 NA
1054 1 NA
1034 0 NA
这应该变成:
Obs event enum
1056 1 1
1059 1 2
1070 0 2
1054 1 3
1034 0 3
到目前为止,我已经尝试过 lag()
test_model$enum <- mutate(test_model, enum = (lag(enum) + event))
但是,这会导致列中充满 test_model (Obs) 中不同列的观察结果。
Obs event enum
1056 1 1056
1059 1 1059
1070 0 1070
1054 1 1054
1034 0 1034
知道这是怎么发生的吗& 我应该怎样对待我的 objective?
我认为您正在寻找 cumsum() 函数。
test_model <- data.frame(Obs = c(1056,1059,1070,1054,1034),
event = c(1,1,0,1,0))
test_model$enum <- cumsum(test_model$event)
#Or using the tidyverse
test_model <- test_model %>% mutate(enum = cumsum(event))