Р - Добавить новый столбец к таблице данных, используя соответствующие значения из другой таблицы данных
Я пытаюсь заполнить таблицу 1 соответствующими значениями val2 таблицы 2
table1$New_val2 = table2[table2$pid==table1$pid,]$val2
Но я получаю предупреждение
longer object length is not a multiple of shorter object length
Что вполне справедливо, поскольку длины таблиц не одинаковы.
Пожалуйста, направьте меня на правильный путь, чтобы сделать это.
3 ответов:
merge(table1, table2[, c("pid", "col2")], by="pid")Добавьте аргумент
all.x=TRUE, чтобы сохранить все PID в таблице 1, которые не имеют совпадений в таблице 2.Вы были на правильном пути. Вот способ использования спичек...
table1$val2 <- table2$val2[match(table1$pid, table2$pid)]
Я не уверен, что вы это имеете в виду, но вы можете использовать:
newtable <- merge(table1,table2, by = "pid")Это создаст новую таблицу, называемую newtable, с 3 столбцами и теми значениями, которым соответствует идентификатор, в данном случае "pid".
Я уже опаздываю, но на случай, если кто-то еще задаст тот же вопрос.:
это именно то, что делает inner_merge dplyr.table1.df <- dplyr::inner_merge(table1, table2, by=pid)Команда by указывает, какой столбец должен использоваться для сопоставления строк.

Comments