Я искал здесь и в Google часами и не могу найти решение моей проблемы.Сравнение двух наборов данных в R
У меня есть два набора данных, содержащие гены. Один набор данных - это мой набор данных (привязка), и мне нужно выяснить, находятся ли эти гены во втором большем наборе данных (каталог). Я хочу, чтобы второй столбец был привязан (прокси) и 21-й столбец из каталога. Вот как выглядят мои наборы данных;
> head(snap)
SNP Proxy Distance RSquared DPrime
1 rs4246511 rs7540233 4541 0.874 1
2 rs4246511 rs4970634 15768 0.874 1
3 rs4246511 rs4532801 18960 0.874 1
4 rs4246511 rs9438982 22242 0.874 1
5 rs4246511 rs9438979 25034 0.874 1
6 rs4246511 rs4414011 25868 0.874 1
head(catalog)
SNPS MERGED SNP_ID_CURRENT CONTEXT INTERGENIC
1 rs7079041 0 7079041 intron 0
2 rs7244261 0 7244261 intergenic 1
3 rs10448044 0 10448044 intergenic 1
4 rs2610025 0 2610025 intergenic 1
5 rs1472147 0 1472147 intron 0
6 rs2648708 0 2648708 intron 0
* Это небольшая часть наборов данных
Чтобы сделать его более сложным, я бы также хотел бы быть в состоянии вывести всю строку данных из обоих наборов данных.
Для первой части моего вопроса я попытался использовать сравнение (которое я нашел из другого аналогичного вопроса здесь). Я решил извлечь колонки, которые мне нужны, чтобы упростить вещи (прокси - это мой столбец из оснастки, а каталоги - столбец из каталога);
comparison <- compare(proxy, catalogsnps, allowAll=TRUE)
comparison$tM
difference <- data.frame(lapply(2:ncol(proxy),function(i)setdiff(cacheGenericsMetaData[,i],comparison$tM[,i])))
colnames(difference) <- colnames(proxy)
write.table(difference, file="difference.csv", sep=";", dec=".")
Однако с этим синтаксисом мой вывод - это просто список всех моих SNP из оснастки.
Выход
1054 6267
1055 6273
1056 6297
1057 6297
1058 6314
1059 6331
1060 6340
1061 6345
1062 6346
1063 6350
1064 6364
1065 6412
1066 6417
1067 6417
1068 6430
Так как это было трудно читать, я добавил строку, чтобы получить файл Excel, это выглядит следующим образом;
x
1 rs7079041
2 rs7244261
3 rs10448044
4 rs2610025
5 rs1472147
6 rs2648708
7 rs11891
8 rs1801725
9 rs6852678
10 rs3135758
11 rs6838240
12 rs6838240
13 rs603894
14 rs3764796
15 rs3764796
16 rs2073214
17 rs4971100
18 rs4971100
19 rs11718502
20 rs10888073
21 rs7032317
Я также нашел другое возможное решение здесь, но у меня снова был только список моих SNP.
rows.diff <- function(catalog, proxy)
{
catalogsnps.vec <- apply(catalogsnps, 1, paste, collapse="")
proxy.vec <- apply(proxy, 1, paste, collaspse= "")
rows.diff <- catalogsnps[!catalogsnps.vec %in% proxy.vec,]
return(rows.diff)
}
write.table(rows.diff(catalogsnps, proxy), file="rowdiff.csv", sep=";", dec=",")
Для второй части моего вопроса, я полностью потерял о том, где начать
Большое спасибо за любую помощь
Клэр
Вы можете добавить несколько примеров данных к этому вопросу 'dput (head (proxy))' – anotherFishGuy
Я редактировал свой пост с выходом, я думаю, что это то, что вы имели в виду? –
Нет Клэр, он попросил вывести код, который он дал. Это способ поделиться образцом ваших входных данных, которые нужно прочитать в R. – Molx