У меня есть результаты двух экспериментов по дифференциальной экспрессии белка, которые являются идентификаторами UniProtKB. Я использовал Biomart, чтобы сопоставить эти идентификаторы с именами генов, но не все идентификаторы были сопоставлены с именами генов. Я хочу объединить их и исходный список UniprotKB и выровнять по идентификатору UniprotKB, чтобы получить один набор данных. Я впервые использую R для такого анализа, поэтому все предложения и примеры кода были с благодарностью приняты.
датафрейм 1
Gene_1 ID_1
Gdi2 G3GR73
Pitrm1 G3GR85
G3GRA0
Tmem43 G3GS14
Tmf1 G3GS63
Ddx3x G3GSH5
Bdh1 G3GSJ7
Pak2 G3GSK4
Tfrc G3GSM5
Umps G3GSP0
Gart G3GT56
Pgm3 G3GTC9
Cpt2 G3GTN3
Vps26b G3GTV9
Mthfd1l G3GU10
Rbm19 G3GU41
G3GU60
Prkab1 G3GU67
Tigar G3GUK0
датафрейм 2
Gene_2 ID_2
Bak1 A1E3K4
Pitrm1 G3GR85
Gtpbp4 G3GR93
Lbr G3GRA0
Tmem43 G3GS14
Tmf1 G3GS63
Ddx3x G3GSH5
Bdh1 G3GSJ7
Tfrc G3GSM5
Umps G3GSP0
Gart G3GT56
Pgm3 G3GTC9
Grb2 G3GTE4
Cpt2 G3GTN3
Vps26b G3GTV9
Mthfd1l G3GU10
Rbm19 G3GU41
G3GU60
Prkab1 G3GU67
исходные данные
ID_3
A1E3K4
G3GR73
G3GR85
G3GR93
G3GRA0
G3GRB1
G3GRB9
G3GRD8
G3GRE1
G3GRM2
G3GRT0
G3GRW3
G3GRX2
G3GS14
G3GS63
G3GS70
G3GS82
G3GSH2
G3GSH5
Я пробовал функции cbind и match_order, но они не выполняют именно то, что я хочу. Также попытался создать фрейм данных из 2 наборов данных, но не смог, так как они разных размеров.
joint <- data.frame(ori$ID_3, df_1$ID_1, df_1$Gene_1)
Ошибка в data.frame (ori $ ID_3, df_1 $ ID_1, df_1 $ Gene_1):
аргументы подразумевают различное количество строк: 1255, 544
цель состоит в том, чтобы получить что-то подобное для всех приблизительно 1300 записей в наборе данных 3
Gene_1 ID_1 Gene_2 ID_2 ID_3
Bak1 A1E3K4 A1E3K4
Gdi2 G3GR73 G3GR73
Pitrm1 G3GR85 Pitrm1 G3GR85 G3GR85
Gtpbp4 G3GR93 G3GR93
G3GRA0 Lbr G3GRA0 G3GRA0
G3GRB1
G3GRB9
G3GRD8
G3GRE1
G3GRM2
G3GRT0
G3GRW3
G3GRX2
Tmem43 G3GS14 Tmem43 G3GS14 G3GS14
Tmf1 G3GS63 Tmf1 G3GS63 G3GS63
G3GS70
G3GS82
G3GSH2
Ddx3x G3GSH5 Ddx3x G3GSH5 G3GSH5
G3GSJ5
Bdh1 G3GSJ7 Bdh1 G3GSJ7 G3GSJ7
Pak2 G3GSK4 G3GSK4
G3GSL6
Tfrc G3GSM5 Tfrc G3GSM5 G3GSM5
Я впервые использую R для такого анализа, поэтому все предложения и примеры кода с благодарностью приняты.
Обновление 1
На основании кода Стюартса и предложений я получил следующее. файл 1 имеет 2 столбца и 544 наблюдения, файл 2 имеет 2 столбца и 419 наблюдений, файл 3 содержит 1254 наблюдения. Файлы были объединены правильно, но в конечном файле всего 33 наблюдения, а не 1254.
getwd()
file1 <- read.csv("cigr_db.csv", sep=",", header=T)
file2 <- read.csv("picr_db.csv", sep=",", header=T)
file3 <- read.csv("progen_data.csv", sep=",", header=T)
# Change the ID column name to be the same in each dataframe, so we can match on it
colnames(file1)[2] <- 'ID'
colnames(file2)[2] <- 'ID'
colnames(file3)[1] <- 'ID'
v <- plyr::join(df1, df2, type='full')
v <- plyr::join(v, df3, type='full')
v
write.csv(v, file = "all_condt.csv")````