Я создаю два кадра данных, а затем объединять их в третий:Невозможно скопировать значения одного столбца в другой
dat <- data.frame(code = c("A11", "B22", "C33"),
age = c(NA, NA, 12),
sex = c(NA, NA, 2),
more = c(7, 4, 9),
stringsAsFactors = FALSE)
age.and.sex <- read.table(textConnection("
code age sex
A11 15 2
B22 10 1
"), header = TRUE, stringsAsFactors = FALSE)
joined <- merge(dat, age.and.sex, by="code", all.x=TRUE)
joined
code age.x sex.x more age.y sex.y
1 A11 NA NA 7 15 2
2 B22 NA NA 4 10 1
3 C33 12 2 9 NA NA
Теперь, когда я пытаюсь скопировать значения из двух новых столбцов («age.y» «sex.y») в двух старых («age.x», «sex.y»), это работает для одной колонки, но с другой я получаю любопытное предупреждение:
joined[is.na(joined$age.x)]$age.x <- joined$age.y
joined[is.na(joined$sex.x)]$sex.x <- joined$sex.y
Warning message:
In `[<-.data.frame`(`*tmp*`, is.na(joined$sex.x), value = list(code = c("A11", :
provided 5 variables to replace 4 variables
Что здесь происходит?
Я думаю, 'присоединился $ age.x [is.na (присоединился $ age.x)]' может быть более эффективным. – nicola
Я старался оставаться рядом с решением OPs, чтобы он был более поучительным. Я согласен с тем, что ваш путь или предложенный один йоран были бы предпочтительнее. –
@nicola Почему это более эффективно? –