我在这里搜索并谷歌几个小时,无法找到我的问题的解决方案。
我有两个包含基因的数据集。一个数据集是我的数据集(快照),我需要看看这些基因是否在第二个更大的数据集(目录)中。我想要snap(代理)中的第二列和目录中的第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
*这是数据集的一小部分
为了使它更复杂,我还希望能够从两个数据集中提取整行数据。
对于我的问题的第一部分,我尝试过使用比较(我在这里从另一个类似的问题中找到)。我决定提取我需要的列来简化事物(代理是我的列来自snap,catalogsnps是目录中的列);
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=".")
但是使用这种语法,我的输出只是来自snap的所有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=",")
对于我的问题的第二部分,我完全不知道从哪里开始
非常感谢您的帮助
克莱尔
答案 0 :(得分:0)
为什么不呢:
new.data <- merge(snap, catalog, by.x='proxy', by.y='catalogsnps')
这应该为您提供一个新的数据框,其行只是proxy和catalogsnps匹配的行,其列包含原始数据框中的所有列。