Mam dwie ramki danych, Data1 i Data2, które chcę scalić na podstawie zmiennej "ID".Scalanie dwóch ramek danych w R, które mają wspólne i niepospolite próbki
tym przykładzie danych można pobrać tutaj: http://dl.dropbox.com/u/52600559/example.RData
Oto pierwsza ramka danych:
> 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
A oto druga ramka danych:
> 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
Próbowałem scal je w następujący sposób:
> 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
Jak widać, obie ramki danych mają wiele takich samych zmiennych. Jednak niektóre identyfikatory w Data1 nie znajdują się w Data2 i odwrotnie. Ponadto niektóre identyfikatory znajdują się w obu ramkach danych.
Pytanie 1: Chcę również scalić wszystkie kolumny pokazane powyżej. Dlatego chcę połączyć "Fruit.x" z "Fruit.y". w jedną kolumnę o nazwie "Owoce". Jak mogę to zrobić?
Pytanie 2: Co jeśli w przypadku jednej z próbek, które występują zarówno w Data1, jak i Data2, jedna z wartości nie zgadza się. Tak więc dla próbki ID 1, jeśli Fruit.x jest Apple, ale Fruit.y jest nieprawidłowo zakodowany jako Aple (z błędną pisownią), czy istnieje sposób, aby szybko sprawdzić wszystkie te wystąpienia, aby móc wybrać, który z nich jest prawidłowy? Czy mogę powiedzieć R, aby zawsze uważać Data1 za poprawną w porównaniu z Data2, gdy tak się dzieje?
Dziękuję każdemu, kto może pomóc!
Dziękuję wszystkim za odpowiedzi! +1 do wszystkich! – Alexander