У меня есть два фрейма данных, Data1 и Data2, которые я хочу объединить на основе переменной «ID».
Данные этого примера можно скачать здесь: http://dl.dropbox.com/u/52600559/example.RData
Вот первый кадр данных:
> Data1
ID Fruit Color Weight
1 1 Apple Red 5
2 2 Orange Orange 7
3 3 Banana Yellow 3
4 4 Pear Green 5
5 5 Tomato Red 4
6 6 Berry Blue 4
7 7 Mandarin Orange 4
8 8 Pineapple Yellow 9
9 9 Nectarine Orange 5
10 10 Beet Red 5
А вот второй кадр данных:
> Data2
ID Fruit Color Weight
1 1 Apple Red 5
2 2 Orange Orange 7
3 3 Banana Yellow 3
4 4 Pear Green 5
5 5 Tomato Red 4
6 11 Pomegranate Red 6
7 12 Grape Green 4
8 13 Cranberry Red 4
9 14 Melon Pink 5
10 15 Pumpkin Orange 10
Я пытался объединить их так:
> merge(Data1, Data2, by = "ID", sort = FALSE, all.x = TRUE, all.y = TRUE)
ID Fruit.x Color.x Weight.x Fruit.y Color.y Weight.y
1 1 Apple Red 5 Apple Red 5
2 2 Orange Orange 7 Orange Orange 7
3 3 Banana Yellow 3 Banana Yellow 3
4 4 Pear Green 5 Pear Green 5
5 5 Tomato Red 4 Tomato Red 4
6 9 Nectarine Orange 5 <NA> <NA> NA
7 6 Berry Blue 4 <NA> <NA> NA
8 7 Mandarin Orange 4 <NA> <NA> NA
9 8 Pineapple Yellow 9 <NA> <NA> NA
10 10 Beet Red 5 <NA> <NA> NA
11 14 <NA> <NA> NA Melon Pink 5
12 11 <NA> <NA> NA Pomegranate Red 6
13 12 <NA> <NA> NA Grape Green 4
14 13 <NA> <NA> NA Cranberry Red 4
15 15 <NA> <NA> NA Pumpkin Orange 10
Как видите, оба фрейма данных имеют много одинаковых переменных. Однако некоторые идентификаторы в Data1 не находятся в Data2, и наоборот. Кроме того, некоторые идентификаторы расположены в обоих фреймах данных.
Вопрос 1: Я хочу объединить все столбцы, которые показаны выше. Итак, я хочу, чтобы "Fruit.x" был объединен с "Fruit.y". в одну колонку под названием «Фрукты». Как я могу это сделать?
Вопрос 2. Что если для одного из образцов, который, как оказалось, присутствует как в Data1, так и в Data2, одно из значений не совпадает. Таким образом, для идентификатора образца 1, если Fruit.x - это Apple, но Fruit.y неверно закодирован как Aple (с опечаткой), есть ли способ быстро проверить все эти экземпляры, чтобы выбрать правильный? Или я могу сказать R всегда считать Data1 корректным по сравнению с Data2, когда это происходит?
Спасибо всем, кто может помочь !!