Я новичок в использовании R. У меня есть два фрейма данных (как показано ниже), и я хотел бы добавить информацию из df2 в df1. Единственный общий столбец между обоими фреймами данных - «Образец». Поэтому я попытался использовать этот столбец для объединения обоих фреймов данных.
df1
structure(list(Segment = c(3L, 3L, 3L, 4L, 5L, 6L, 6L, 6L, 7L,
7L), Position = c(838L, 891L, 1204L, 732L, 1550L, 688L, 1167L,
1446L, 950L, 981L), `AA-REF` = structure(c(2L, 5L, 7L, 6L, 1L,
8L, 8L, 1L, 3L, 4L), .Label = c("", "D", "E", "H", "K", "L",
"Q", "T"), class = "factor"), `AA-ALT` = structure(c(4L, 2L,
2L, 3L, NA, 5L, 3L, NA, 1L, 4L), .Label = c("E", "K", "M", "N",
"T"), class = "factor"), SYN = structure(c(2L, 3L, 2L, 2L, 1L,
3L, 2L, 1L, 3L, 2L), .Label = c(" ", "N ", "Y "), class = "factor"),
Sample = c("AO103", "AO103", "AO103", "AO103", "AO103", "AO103",
"AO103", "AO103", "AO103", "AO103")), row.names = c(NA, 10L
), class = "data.frame")
Segment Position AA-REF AA-ALT SYN Sample
1 3 838 D N N AO103
2 3 891 K K Y AO103
3 3 1204 Q K N AO103
4 4 732 L M N AO103
5 5 1550 <NA> AO103
6 6 688 T T Y AO103
7 6 1167 T M N AO103
8 6 1446 <NA> AO103
9 7 950 E E Y AO103
10 7 981 H N N AO103
11 8 199 T N N AO103
12 1 341 T K N AO104
13 1 934 T A N AO104
14 1 1327 L F N AO104
15 1 1349 D G N AO104
df2
structure(list(Sample = c("AO208 ", "AO209 ", "AO210 ", "AO211 ",
"AO212 ", "AO213 ", "AO100 ", "AO101 ", "AO102 ", "AO103 "),
Quail = c(7, 8, 9, 10, 11, 12, 7, 8, 9, 10), day = c(3, 3,
3, 3, 3, 3, 5, 5, 5, 5), Expo = structure(c(1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L), .Label = " DC ", class = "factor"),
Group = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L
), .Label = " var", class = "factor")), row.names = c(NA,
10L), class = "data.frame")
Sample Quail day Expo Group
1 AO208 7 3 DC var
2 AO209 8 3 DC var
3 AO210 9 3 DC var
4 AO211 10 3 DC var
5 AO212 11 3 DC var
6 AO213 12 3 DC var
7 AO100 7 5 DC var
8 AO101 8 5 DC var
9 AO102 9 5 DC var
10 AO103 10 5 DC var
11 AO104 11 5 DC var
ПРИМЕЧАНИЕ. Не все записи в df2 $ Sample присутствуют в df1 $ Sample
Я хотел бы получить что-то вроде следующего:
Segment Position AA-REF AA-ALT SYN Sample Quail day Expo Group
1 3 838 D N N AO103 10 5 DC var
2 3 891 K K Y AO103 10 5 DC var
3 3 1204 Q K N AO103 10 5 DC var
4 4 732 L M N AO103 10 5 DC var
5 5 1550 <NA> AO103 10 5 DC var
6 6 688 T T Y AO103 10 5 DC var
7 6 1167 T M N AO103 10 5 DC var
8 6 1446 <NA> AO103 10 5 DC var
9 7 950 E E Y AO103 10 5 DC var
10 7 981 H N N AO103 10 5 DC var
11 8 199 T N N AO103 10 5 DC var
12 1 341 T K N AO104 11 5 DC var
13 1 934 T A N AO104 11 5 DC var
14 1 1327 L F N AO104 11 5 DC var
15 1 1349 D G N AO104 11 5 DC var
Я пытался:
x <- merge(df1, df2, by = "Sample", all = TRUE)
Даже если это добавляет столбцы, все из df2 помещается в конец df1.
Я также попытался использовать dplyr left_join (среди прочего) как:
x <- df1 %>%
left_join(df2, by = "Sample")
Это добавляет пустые столбцы из df2 и вообще никакой информации.
Я просматривал много объединенных сообщений, но ни одна из них, похоже, не решала мою проблему.
Я также пытался сопоставить без успеха.