Для data.frame в R, вытягивая данные из одного кадра данных на основе значений из другого кадра данных

Извините, если это действительно так просто, но я пытаюсь отработать ответ часами. У меня есть два кадра данных, которые содержат по несколько столбцов, пример аналогичной ситуации ниже (фактические кадры данных очень большие и громоздкие).

Первый кадр данных

"GPS_ID" "Object_ID" "DBH_cm"
 1 19426 15
 2 9456 9
 3 19887 11
 5 18765 4 
 6 9322 7

И второй кадр данных

"Location" "ID"
 block 1 9456
 block 2 18765
 block 2 9322

Мне нужно создать новый объект, у которого ТОЛЬКО идентификатор во втором кадре данных, соответствующий их соответствующему DBH_cm из первого кадра данных. Я думал, что слияние поможет, но когда я попробовал, он просто добавил столбец "Местоположение" в первый фрейм данных.

2 ответа

Если я правильно понимаю ваш окончательный результат, функция merge должна быть то, что вам нужно:

> merge(x,y, by.x = "Object_ID", by.y = "ID")
 Object_ID GPS_ID DBH_cm Location
1 9322 6 7 block_3
2 9456 2 9 block_1
3 18765 5 4 block_2

Вы можете дополнительно отредактировать новый data.frame, удалив те столбцы, которые вам не нужны.


Вы также можете использовать inner_join из dplyr. Если x и y - два набора данных

library(dplyr)
 colnames(y)[2] <- colnames(x)[2]
 inner_join(x,y, by="Object_ID")
 # GPS_ID Object_ID DBH_cm Location
 # 1 2 9456 9 block 1
 # 2 5 18765 4 block 2
 # 3 6 9322 7 block 2

licensed under cc by-sa 3.0 with attribution.