Невозможно объединить два кадра данных в R - PullRequest
1 голос
/ 25 апреля 2019

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

amino_acid_color

> dput(amino_acid_color)
structure(list(amino_acids = c("A", "R", "N", "D", "C", "Q", 
"E", "G", "H", "I", "L", "K", "M", "F", "P", "S", "T", "W", "Y", 
"V"), color_of_aa = c("#E6194B", "#3CB44B", "#FFE119", "#4363D8", 
"#F58231", "#911EB4", "#42D4F4", "#F032E6", "#BFEF45", "#FABEBE", 
"#469990", "#E6BEFF", "#9A6324", "#FFFAC8", "#800000", "#AAFFC3", 
"#808000", "#FFD8B1", "#000075", "#A9A9A9")), row.names = c(NA, 
-20L), class = "data.frame")
df

> dput(df)
structure(list(date = structure(c(1L, 2L, 1L, 2L, 1L, 2L), .Label = c("13-Feb-2008", 
"13-May-2008", "29-Sep-2008", "02-Oct-2008", "11-Nov-2008", "13-Jan-2009", 
"11-Jun-2009", "05-Nov-2009", "15-Apr-2010", "16-Apr-2010", "03-Aug-2010", 
"02-Sep-2010"), class = "factor"), aa_position = structure(c(1L, 
1L, 1L, 1L, 1L, 1L), .Label = "2986", class = "factor"), amino_acids = c("H ", 
"H ", "R ", "R ", "Y ", "Y "), proportionality = c(99.8162729658793, 
0, 0.0393700787401575, 0, 0.026246719160105, 0)), row.names = c(1L, 
2L, 13L, 14L, 25L, 26L), class = "data.frame")

Код, который я пробовал:

> new_df <- merge(amino_acid_color,df,by="amino_acids",all.y = TRUE)

В настоящее время создается следующий фрейм данных:

amino_acids color_of_aa        date aa_position proportionality
1          H         <NA> 13-Feb-2008        2986     99.81627297
2          H         <NA> 13-May-2008        2986      0.00000000
3          R         <NA> 13-Feb-2008        2986      0.03937008
4          R         <NA> 13-May-2008        2986      0.00000000
5          Y         <NA> 13-Feb-2008        2986      0.02624672
6          Y         <NA> 13-May-2008        2986      0.00000000

Однако я смотрю на получение шестнадцатеричных чисел в столбце с именем 'color_of_aa' из кадра данных 'amin_acid_color', поэтому # BFEF45, # 3CB44B, # 000075.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 25 апреля 2019

В amino_acids = c("H ", "H ", "R ", "R ", "Y ", "Y ") есть пробел, который предупреждает проблему.

library(dplyr)
df %>% mutate(amino_acids=trimws(amino_acids)) %>% left_join(amino_acid_color)

Использование baseR

df$amino_acids <- trimws(df$amino_acids)
merge(amino_acid_color,df,by="amino_acids",all.y = TRUE)

   amino_acids color_of_aa        date aa_position proportionality
1           H     #BFEF45 13-Feb-2008        2986     99.81627297
2           H     #BFEF45 13-May-2008        2986      0.00000000
3           R     #3CB44B 13-Feb-2008        2986      0.03937008
4           R     #3CB44B 13-May-2008        2986      0.00000000
5           Y     #000075 13-Feb-2008        2986      0.02624672
6           Y     #000075 13-May-2008        2986      0.00000000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...