Запись нескольких переменных в новую приводит к странным вычитаниям - PullRequest
0 голосов
/ 20 марта 2020

У меня есть несколько дихотомических переменных, которые я хочу перекодировать в новую. Но делать это по-своему ведет к ложным ценностям. Только последнее значение является правильным, а из других пропущено несколько.

set.seed(1)
id <- 1:1000
v1 <- rbinom(1000, 1, 0.05)
v2 <- rbinom(1000, 1, 0.1)
v3 <- rbinom(1000, 1, 0.15)
DF <- data.frame(id, v1, v2, v3)

table(DF$v1) # n = 53
table(DF$v2) # n = 102
table(DF$v3) # n = 154

DF$v_sum <- 0
DF$v_sum[DF$v1 == 1] <-  1
DF$v_sum[DF$v2 == 1] <-  2
DF$v_sum[DF$v3 == 1] <-  3

table(DF$v_sum) # 1 = 43 instead of 53, 2 ist 89 instead of 102 and 3 = 154 is correct

Как правильно сделать это? Заранее спасибо!

1 Ответ

1 голос
/ 20 марта 2020

Причина в том, что значения 1 в v1, v2 и v3 не зависят друг от друга, что означает, что в строке может быть более одной единицы.

sum(rowSums(DF[-1]) > 1)
#[1] 20

Как мы можем видеть из вышеизложенного, в 20 строках более 1 единицы в строке, поэтому при запуске строки 2 (DF$v_sum[DF$v2 == 1] <- 2) v_sum для 1-й строки перезагружается. и когда вы запускаете строку 3 (DF$v_sum[DF$v3 == 1] <- 3), она переопределяет значения, назначенные в строке 1 и 2. Следовательно, дает правильный ответ только для последнего значения.

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