У меня проблема с моим кодом, я решил это, но теперь я хочу найти более эффективный способ сделать это, так как я уверен, что есть один.переписывание нескольких столбцов на основе разных столбцов
У меня есть данные 120K людей с 262 переменными, и мне нужно обновить некоторые столбцы в данных на основе другого набора столбцов. Я пробовал несколько решений и нашел один здесь 'Recoding data frame column based on multiple columns' , но мне нужно сделать это с несколькими столбцами (6 в моих данных) дважды. Я надеюсь, что есть лучший способ сделать это, чем написать 12 строк, которые делают точно то же самое, что в моем опыте является отличным источником ошибок.
dat <- data.frame(
"x1" = c(1,0,2,0,5,3,2),
"y1" = c(12,14,13,14,12,11,13),
"x2" = c(3,2,0,1,2,5,3),
"y2" = c(11,13,14,12,13,12,11)
)
dat
# 1st try. works slowly
for(i in 1:nrow(dat)){
if(dat$x1[i] == 2){dat$y1 <- 8}
if(dat$x2[i] == 2){dat$y2 <- 8}
}
# 2nd try. doesn't work. (Tried multiple variation)
dat$y1 <- ifelse(dat$x1 == 2,dat$y1 <- 8,dat$y1)
# 3rd try. works efficiently, but annoying as hell to code.
dat$y1[dat$x1 == 2] <- 8
dat$y2[dat$x2 == 2] <- 8
Заранее спасибо. (это мой первый вопрос, скажите, пожалуйста, если я сделал что-то не так, или если бы я не красноречиво или четко не формулировал себя ...)
Abe.
В конце концов, я сделал то, что ты сделал ... Моя проблема врожденной нелюбви петель в R..seems неправильно ... Спасибо! ! – abe05254
Циклы с метаданных (например, столбцы) не так уж плохи. Обычно петли над данными являются плохими. – Bulat
мои метаданные (ЛЮБОВЬ новое слово, которое вы только что научили меня ..) идет по строкам ... 31 000 из них ... это не идеально ... – abe05254