Создание столбца флага в dplyr - PullRequest
0 голосов
/ 26 февраля 2020

Это действительно разочаровывающий глупый пример. Допустим, у меня есть следующие данные ниже со столбцом идентификатора ...

dat <- data.frame(cbind(rep(c("a","b","c"),c(1,3,1))))
names(dat) <- c("ID")
dat

   ID
1  a
2  b
3  b
4  b
5  c
6  c

Я пытаюсь создать новый столбец, используя пакет dplyr, который создает 0 для первой строки по идентификатору, а затем любые последующие строки будут иметь 1. Таким образом, результирующие данные должны выглядеть следующим образом:

   ID Flag
1  a  0
2  b  0
3  b  1
4  b  1
5  c  0
6  c  1

Я пробовал следующий код, но просто получаю столбец нулей:

dat %>% 
group_by(ID) %>% 
mutate(
 Readmission = ifelse(n() == 1,0,c(0,rep(1,n()-1)))
) %>% data.frame()

Любая помощь приветствуется ! Конечно, это быстрое решение, и я не выспался прошлой ночью. На самом деле это довольно простая задача с использованием lapply ... но она слишком кровавая, чтобы бежать, и мне не терпится.

1 Ответ

0 голосов
/ 26 февраля 2020

n() - количество строк, но вам нужен фактический номер строки. Вот решение:

dat %>% 
  group_by(ID) %>% 
  mutate(
    Readmission = ifelse(row_number()==1, 0, 1)
  ) %>% 
  data.frame()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...