Пожалуйста, смотрите мой код ниже.
У меня есть фрейм данных, в котором каждая раса, с которой человек идентифицирует себя, находится в столбце (например, AWHITE, ABLACK и т. Д.), И если они идентифицируются с этой расой, то запись равна 1 (если не запись равна 2). Респонденты могут идентифицировать себя с более чем одной расой.
Я пытаюсь определить, когда респондент заявил, что он принадлежит к нескольким расам. Если они это сделают, я хочу, чтобы один столбец (ARACE) обновился до 91, а другой столбец (AOTHRACE) стал 2.
Оператор if (в коде ниже) всегда имеет значение TRUE. Хотя это не правильно. Есть респонденты, которые идентифицируют себя только как одну расу (т.е. белые). Я смотрел это несколько раз, но я не могу найти, где я испортил.
Я планирую использовать больше выражений if (если, иначе if) и для других рас / столбцов (т. Е. Респондент идентифицирует как черных И, по крайней мере, еще одну расу), но я даже не могу получить первую работать, поэтому я не реализовал это.
(на самом деле я не хочу, чтобы else равнялся 0, я просто использовал это, чтобы подтвердить, что код не работает должным образом. Когда я запустил функцию сводки в ARACE, минимум составил 91, поэтому я знаю, что это утверждение было никогда не оценивался.)
i <- 0
while (i <= nrow(nhes05v2)){
if ((nhes05v2$AWHITE == 1) && (any(nhes05v2$ABLACK==1, nhes05v2$AAMIND==1, nhes05v2$AASIAN==1, nhes05v2$APACI==1))){
nhes05v2$ARACE = 91
nhes05v2$AOTHRACE = 2}
else {nhes05v2$ARACE = 0
nhes05v2$AOTHRACE = 0}
i <- i+1}
Вот пример значений:
> nhes05v2$AWHITE[1:20]
[1] 1 1 1 1 1 1 2 2 2 1 1 2 1 1 1 1 1 1 1 1
> nhes05v2$ABLACK[1:20]
[1] 2 1 2 2 2 2 1 1 1 2 2 1 2 2 2 2 2 2 2 2
> nhes05v2$AASIAN[1:20]
[1] 2 2 2 1 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2
> nhes05v2$AAMIND[1:20]
[1] 2 2 2 2 2 1 2 2 2 2 2 2 2 1 2 2 2 2 2 2
> nhes05v2$APACI[1:20]
[1] 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2
Я бы хотел, чтобы результат был что-то вроде (это было бы больше, чем просто мой оператор if, приведенный выше, было бы больше if, else if
, но так как я застрял на первом, у меня не было ' это уже прошло)
> nhes05v2$ARACE[1:20]
[1] 0 91 0 91 0 91 91 0 0 91 0 0 0 0 0 0 0 0 0 0
> nhes05v2$AOTHRACE[1:20]
[1] 0 2 0 2 0 2 2 0 0 2 0 0 0 0 0 0 0 0 0 0
В настоящее время вывод
> nhes05v2$ARACE[1:20]
[1] 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91
> nhes05v2$AOTHRACE[1:20]
[1] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2