неожиданный ')' даже с соответствующими скобками - PullRequest
0 голосов
/ 15 мая 2019

Я всегда получаю следующую ошибку в моем коде:

неожиданно ) в ifelse(Kt_15==1&agegroup_15=="91+"&hosp_14==0&male==1,59, ifelse(Kt_15==1&agegroup_15=="91+"&hosp_14==1&male==1,60,0)))))))))))

В моем наборе данных содержится около 1 000 000 наблюдений RA.При следующих условиях я хочу изменить новую переменную с именем RG1.Если я использую только первые 10 строк и позволяю им работать, код работает отлично;но 60 кажется слишком большим для Р. Я уже посчитал количество скобок в десятки раз, и мой друг дважды проверил их.

RA = RA %>%
mutate(RG1=
ifelse(Kt_15==1&agegroup_15=="19-25"&hosp_14==0&male==0,1,
ifelse(Kt_15==1&agegroup_15=="19-25"&hosp_14==1&male==0,2,
ifelse(Kt_15==1&agegroup_15=="19-25"&hosp_14==0&male==1,3,
ifelse(Kt_15==1&agegroup_15=="19-25"&hosp_14==1&male==1,4,
ifelse(Kt_15==1&agegroup_15=="26-30"&hosp_14==0&male==0,5,
ifelse(Kt_15==1&agegroup_15=="26-30"&hosp_14==1&male==0,6,
ifelse(Kt_15==1&agegroup_15=="26-30"&hosp_14==0&male==1,7,
ifelse(Kt_15==1&agegroup_15=="26-30"&hosp_14==1&male==1,8,
ifelse(Kt_15==1&agegroup_15=="31-35"&hosp_14==0&male==0,9,
ifelse(Kt_15==1&agegroup_15=="31-35"&hosp_14==1&male==0,10,
ifelse(Kt_15==1&agegroup_15=="31-35"&hosp_14==0&male==1,11,
ifelse(Kt_15==1&agegroup_15=="31-35"&hosp_14==1&male==1,12,
ifelse(Kt_15==1&agegroup_15=="36-40"&hosp_14==0&male==0,13,
ifelse(Kt_15==1&agegroup_15=="36-40"&hosp_14==1&male==0,14,
ifelse(Kt_15==1&agegroup_15=="36-40"&hosp_14==0&male==1,15,
ifelse(Kt_15==1&agegroup_15=="36-40"&hosp_14==1&male==1,16,
ifelse(Kt_15==1&agegroup_15=="41-45"&hosp_14==0&male==0,17,
ifelse(Kt_15==1&agegroup_15=="41-45"&hosp_14==1&male==0,18,
ifelse(Kt_15==1&agegroup_15=="41-45"&hosp_14==0&male==1,19,
ifelse(Kt_15==1&agegroup_15=="41-45"&hosp_14==1&male==1,20,
ifelse(Kt_15==1&agegroup_15=="46-50"&hosp_14==0&male==0,21,
ifelse(Kt_15==1&agegroup_15=="46-50"&hosp_14==1&male==0,22,
ifelse(Kt_15==1&agegroup_15=="46-50"&hosp_14==0&male==1,23,
ifelse(Kt_15==1&agegroup_15=="46-50"&hosp_14==1&male==1,24,
ifelse(Kt_15==1&agegroup_15=="51-55"&hosp_14==0&male==0,25,
ifelse(Kt_15==1&agegroup_15=="51-55"&hosp_14==1&male==0,26,
ifelse(Kt_15==1&agegroup_15=="51-55"&hosp_14==0&male==1,27,
ifelse(Kt_15==1&agegroup_15=="51-55"&hosp_14==1&male==1,28,
ifelse(Kt_15==1&agegroup_15=="56-60"&hosp_14==0&male==0,29,
ifelse(Kt_15==1&agegroup_15=="56-60"&hosp_14==1&male==0,30,
ifelse(Kt_15==1&agegroup_15=="56-60"&hosp_14==0&male==1,31,
ifelse(Kt_15==1&agegroup_15=="56-60"&hosp_14==1&male==1,32,
ifelse(Kt_15==1&agegroup_15=="61-65"&hosp_14==0&male==0,33,
ifelse(Kt_15==1&agegroup_15=="61-65"&hosp_14==1&male==0,34,
ifelse(Kt_15==1&agegroup_15=="61-65"&hosp_14==0&male==1,35,
ifelse(Kt_15==1&agegroup_15=="61-65"&hosp_14==1&male==1,36,
ifelse(Kt_15==1&agegroup_15=="66-70"&hosp_14==0&male==0,37,
ifelse(Kt_15==1&agegroup_15=="66-70"&hosp_14==1&male==0,38,
ifelse(Kt_15==1&agegroup_15=="66-70"&hosp_14==0&male==1,39,
ifelse(Kt_15==1&agegroup_15=="66-70"&hosp_14==1&male==1,40,
ifelse(Kt_15==1&agegroup_15=="71-75"&hosp_14==0&male==0,41,
ifelse(Kt_15==1&agegroup_15=="71-75"&hosp_14==1&male==0,42,
ifelse(Kt_15==1&agegroup_15=="71-75"&hosp_14==0&male==1,43,
ifelse(Kt_15==1&agegroup_15=="71-75"&hosp_14==1&male==1,44,
ifelse(Kt_15==1&agegroup_15=="76-80"&hosp_14==0&male==0,45,
ifelse(Kt_15==1&agegroup_15=="76-80"&hosp_14==1&male==0,46,
ifelse(Kt_15==1&agegroup_15=="76-80"&hosp_14==0&male==1,47,
ifelse(Kt_15==1&agegroup_15=="76-80"&hosp_14==1&male==1,48,
ifelse(Kt_15==1&agegroup_15=="81-85"&hosp_14==0&male==0,49,
ifelse(Kt_15==1&agegroup_15=="81-85"&hosp_14==1&male==0,50,
ifelse(Kt_15==1&agegroup_15=="81-85"&hosp_14==0&male==1,51,
ifelse(Kt_15==1&agegroup_15=="81-85"&hosp_14==1&male==1,52,
ifelse(Kt_15==1&agegroup_15=="86-90"&hosp_14==0&male==0,53,
ifelse(Kt_15==1&agegroup_15=="86-90"&hosp_14==1&male==0,54,
ifelse(Kt_15==1&agegroup_15=="86-90"&hosp_14==0&male==1,55,
ifelse(Kt_15==1&agegroup_15=="86-90"&hosp_14==1&male==1,56,
ifelse(Kt_15==1&agegroup_15=="91+"&hosp_14==0&male==0,57,
ifelse(Kt_15==1&agegroup_15=="91+"&hosp_14==1&male==0,58,
ifelse(Kt_15==1&agegroup_15=="91+"&hosp_14==0&male==1,59,
ifelse(Kt_15==1&agegroup_15=="91+"&hosp_14==1&male==1,60,0))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

Используя приведенный выше код, я хочу, чтобы в каждом наблюдении было число от 1 до 60, в зависимости от упомянутых условий.

Ответы [ 2 ]

2 голосов
/ 15 мая 2019

Краткий ответ: не используйте так много вложенных ifelse() функций.
Как отметил akrun в своем комментарии 1006 *: у вложенности могут быть ограничения.

Я всегда находил вложенные ifelse() немного сложными для отслеживания в любом случае. У меня case_when() работает лучше. Документация здесь . Пример 'звездных войн' в примерах документации может быть несколько похож на ваш случай.

1 голос
/ 15 мая 2019

Я предполагаю, что это код вас и есть реальные соответствующие данные.Еще один вариант упоминается @akrun и @camille.

data %>% 
select(Kt_15, agegroup_15, hosp_14, male) %>%
distinct() %>%
arrange(Kt_15, agegroup_15, male, hosp_14) %>%
mutate(RG1 = row_number()) %>%
left_join(data)

С этим кодом вы получите уникальные строки, основанные на Kt_15, agegroup, hosp_14 и male.Затем row_number() будет связан с каждой из вышеупомянутых групп данных.После этого RG1 теперь назначается на основе этих группировок.

Это не проверено, поскольку вы не предоставили данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...