Прикрепите число к строке в столбце на основе условия в других столбцах в R - PullRequest
0 голосов
/ 21 декабря 2018

Я хотел бы добавить число только к MATH в столбце course на основании следующего условия;для каждого ID, если MATH имеет столбец output, равный pass, увеличьте присоединенное число на 1 для следующего MATH.Вот пример:

df = read.table(text = 
'ID  course  outcome
 10  MATH    fail
 10  PHYS    pass
 10  MATH    pass
 10  MATH    fail
 10  CHEM    pass
 11  MATH    pass
 11  PHYS    fail
 12  CMP     pass
 12  MATH    fail
 12  MATH    fail
 12  CHEM    pass
 12  MATH    pass
 12  MATH    fail', header = T)


df_result = read.table(text = 
  'ID  course  outcome
   10  MATH1    fail
   10  PHYS     pass
   10  MATH1    pass
   10  MATH2    fail
   10  CHEM     pass
   11  MATH1    pass
   11  PHYS     fail
   12  CMP      pass
   12  MATH1    fail
   12  MATH1    fail
   12  CHEM     pass
   12  MATH1    pass
   12  MATH2    fail', header = T)

Пожалуйста, помогите мне сделать это в R

1 Ответ

0 голосов
/ 21 декабря 2018

Примерно так и должно быть (используя dplyr):

df %>% 
  group_by(ID) %>%
  mutate(math_pass_count = 1 + lag(cumsum(course == "MATH" & outcome == "pass"), 
                                   default = 0),
         suffix = ifelse(course == "MATH", math_pass_count, ""),
         course = paste0(course, suffix)) %>%
  select(-math_pass_count, -suffix)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...