Создание манекенов для последующих посещений - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть простая структура данных с идентификатором и индикатором временных рядов (prd). Я хотел бы создать фиктивную переменную для последующих посещений "fup", которая равна 0, если у пациента больше нет посещений, и 1, если у пациента будет больше посещений в будущем.

Как мне поступить?

id<- c(1, 1, 1, 2, 3, 3)
prd <- c(1, 2, 3, 1, 1, 2)

df <- data.frame(id=id, prd=prd)

Желаемый результат:

  id prd fup
1  1   1   1
2  1   2   1
3  1   3   0
4  2   1   0
5  3   1   1
6  3   2   0

1 Ответ

3 голосов
/ 04 ноября 2019

Мы можем проверить, является ли текущая строка последней строкой в ​​каждой группе. В базе R

df$fup <- with(df, ave(prd, id, FUN = function(x) seq_along(x) != length(x)))
df

#  id prd fup
#1  1   1   1
#2  1   2   1
#3  1   3   0
#4  2   1   0
#5  3   1   1
#6  3   2   0

Аналогично в dplyr,

library(dplyr)
df %>%  group_by(id) %>%  mutate(fup = +(row_number() != n()))

и data.table

library(data.table)
setDT(df)[, fup := +(seq_along(prd) != .N), by = id]
...