#r #variables #dplyr #case-when
#r #переменные #dplyr #случай-когда
Вопрос:
Error: Problem with `mutate()` input `chldwork`.
x Input must be a vector, not a `formula` object.
ℹ Input `chldwork` is `case_when(...)`.
Run `rlang::last_error()` to see where the error occur
Я продолжаю получать эту ошибку, когда пытаюсь запустить этот код:
d5clean <- d5clean %>%
mutate(chldwork = case_when(is.na(curjobr5) amp; wrmm12r5 == 0 amp; wrno12r5 == 0 amp; wrow12r5 == 0 ~ 0,
is.na(curjobr5) amp; wrmm12r5 == 1 amp; wrno12r5 == 0 amp; wrow12r5 == 0 ~ 1,
is.na(curjobr5) amp; wrmm12r5 == 1 amp; wrno12r5 == 1 amp; wrow12r5 == 0 ~ 1,
is.na(curjobr5) amp; wrmm12r5 == 1 amp; wrno12r5 == 1 amp; wrow12r5 == 1 ~ 1,
is.na(curjobr5) amp; wrmm12r5 == 0 amp; wrno12r5 == 0 amp; wrow12r5 == 1 ~ 1,
is.na(curjobr5) amp; wrmm12r5 == 0 amp; wrno12r5 == 1 amp; wrow12r5 == 1 ~ 1,
is.na(curjobr5) amp; wrmm12r5 == 0 amp; wrno12r5 == 1 amp; wrow12r5 == 0 ~ 1,
is.na(curjobr5) amp; wrmm12r5 == 1 amp; wrno12r5 == 0 amp; wrow12r5 == 0 ~ 1,
curjobr5 == 0 amp; is.na(wrmm12r5) amp; wrno12r5 == 0 amp; wrow12r5 == 0 ~ 0,
curjobr5 == 0 amp; is.na(wrmm12r5) amp; wrno12r5 == 1 amp; wrow12r5 == 0 ~ 1,
curjobr5 == 0 amp; is.na(wrmm12r5) amp; wrno12r5 == 1 amp; wrow12r5 == 1 ~ 1,
curjobr5 == 1 amp; is.na(wrmm12r5) amp; wrno12r5 == 0 amp; wrow12r5 == 0 ~ 1,
curjobr5 == 1 amp; is.na(wrmm12r5) amp; wrno12r5 == 1 amp; wrow12r5 == 0 ~ 1,
curjobr5 == 1 amp; is.na(wrmm12r5) amp; wrno12r5 == 1 amp; wrow12r5 == 1 ~ 1,
curjobr5 == 0 amp; wrmm12r5== 0 amp; is.na(wrno12r5) amp; wrow12r5 == 0 ~ 0,
curjobr5 == 0 amp; wrmm12r5== 0 amp; is.na(wrno12r5) amp; wrow12r5 == 1 ~ 1,
curjobr5 == 0 amp; wrmm12r5== 1 amp; is.na(wrno12r5) amp; wrow12r5 == 1 ~ 1,
curjobr5 == 1 amp; wrmm12r5== 1 amp; is.na(wrno12r5) amp; wrow12r5 == 1 ~ 1,
curjobr5 == 1 amp; wrmm12r5== 0 amp; is.na(wrno12r5) amp; wrow12r5 == 0 ~ 1,
curjobr5 == 1 amp; wrmm12r5== 0 amp; is.na(wrno12r5) amp; wrow12r5 == 0 ~ 1,
curjobr5 == 0 amp; wrmm12r5==0 amp; wrno12r5 == 0 amp; is.na(wrow12r5) ~ 0,
curjobr5 == 0 amp; wrmm12r5==0 amp; wrno12r5 == 1 amp; is.na(wrow12r5) ~ 1,
curjobr5 == 0 amp; wrmm12r5==1 amp; wrno12r5 == 1 amp; is.na(wrow12r5) ~ 1,
curjobr5 == 1 amp; wrmm12r5==1 amp; wrno12r5 == 1 amp; is.na(wrow12r5) ~ 0,
curjobr5 == 1 amp; wrmm12r5==0 amp; wrno12r5 == 0 amp; is.na(wrow12r5) ~ 1,
curjobr5 == 1 amp; wrmm12r5==1 amp; wrno12r5 == 0 amp; is.na(wrow12r5) ~ 1,
curjobr5 == 1 amp; wrmm12r5==1 amp; wrno12r5 == 1 amp; is.na(wrow12r5) ~ 1,
curjobr5 == 0 amp; wrmm12r5 == 0 amp; wrno12r5 == 0 amp; wrow12r5 == 0 ~ 0,
curjobr5 == 1 amp; wrmm12r5 == 0 amp; wrno12r5 == 0 amp; wrow12r5 == 0 ~ 1,
curjobr5 == 1 amp; wrmm12r5 == 1 amp; wrno12r5 == 0 amp; wrow12r5 == ~ 1,
curjobr5 == 1 amp; wrmm12r5 == 1 amp; wrno12r5 == 1 amp; wrow12r5 == 0 ~ 1,
curjobr5 == 1 amp; wrmm12r5 == 1 amp; wrno12r5 == 1 amp; wrow12r5 == 1 ~ 1,
curjobr5 == 0 amp; wrmm12r5 == 1 amp; wrno12r5 == 0 amp; wrow12r5 == 0 ~ 1,
curjobr5 == 0 amp; wrmm12r5 == 1 amp; wrno12r5 == 1 amp; wrow12r5 == 0 ~ 1,
curjobr5 == 0 amp; wrmm12r5 == 1 amp; wrno12r5 == 1 amp; wrow12r5 == 1 ~ 1,
curjobr5 == 0 amp; wrmm12r5 == 0 amp; wrno12r5 == 1 amp; wrow12r5 == 0 ~ 1,
curjobr5 == 0 amp; wrmm12r5 == 0 amp; wrno12r5 == 1 amp; wrow12r5 == 1 ~ 1,
curjobr5 == 0 amp; wrmm12r5 == 0 amp; wrno12r5 == 0 amp; wrow12r5 == 1 ~ 1,
TRUE ~ as.numeric(88)))
Я пытаюсь объединить несколько рабочих переменных в одну рабочую переменную с несколькими неслучайными пропущенными значениями. Есть какие-нибудь идеи о том, как заставить это работать?
Я смог выполнить этот код нормально:
d4clean <- d4clean %>%
mutate(chldwork = case_when(curjobr4 == 0 amp; wrbf12r4 == 0 ~ 0, #condition 1
curjobr4 == 1 amp; wrbf12r4 == 1 ~ 1, #condition 2
curjobr4 == 1 amp; wrbf12r4 == 0 ~ 1, #condition 3
curjobr4 == 0 amp; wrbf12r4 == 1 ~ 1, #condition 4
is.na(curjobr4) amp; wrbf12r4 == 1 ~ 1, #condition 5
is.na(curjobr4) amp; wrbf12r4 == 0 ~ 0, #condition 6
TRUE ~ 99)) #all other cases
Кроме того, я не уверен, включает ли это все правильные случаи, которые мне нужно объединить. В этот момент я немного косоглазею.
Комментарии:
1. Ваш код не воспроизводим. Постарайтесь свести к минимуму как можно больше кода, а затем используйте
dput
илиreprex
пакет, чтобы создать простой для понимания и воспроизводимый пример.
Ответ №1:
В одной из строк значение, подлежащее сравнению, отсутствует
...
curjobr5 == 1 amp; wrmm12r5 == 1 amp; wrno12r5 == 0 amp; wrow12r5 == ~ 1,
^
...
что вызвало ошибку
Комментарии:
1. Большое вам спасибо! Я чувствую, что большинство моих ошибок — это опечатки, подобные этой, но я так долго смотрел на это, что не вижу этого.
2. @shaq1993 возможно, было бы лучше использовать an
IDE
, который показывал бы ошибки