我有三张桌子。包含结果的一个。另外两个包含有关结果中出现的唯一ID的注释。我会尝试解释一下格式。
结果
UniqueID1 UniqueID2 [包含某些实验结果的列。]
NOTES1
UniqueID [关于此特定ID的注释]
NOTES2
与上述相同。
所以,我希望结果中的每一行都包含NOTES表中的注释。我现在迭代地完成这个;这个过程现在需要比实验本身更长的时间。我考虑过使用子集或lapply,但似乎找不到合适的东西。
需要考虑的一些事项。
关于结果:结果中的两个UniqueID列是不相交的。它们不是集合;它们包含重复。但是,每对唯一ID在结果中只出现一次。表。
关于NOTES:唯一ID列不包含重复。
我上面给出的细节是为什么我不只是懒惰地对NOTES表进行子集化并在结果和NOTES的子集上调用cbind的部分原因。
我相信我已经为此做了一点点思考;请不要仅仅因为答案对你来说是微不足道的。我没有包含代码,因为我想知道如何在没有迭代的情况下为R中的一般情况完成此操作。如果您认为它会有所帮助,我可以包含一些代码。
样本表:
结果
"UniqueID_1" "UniqueID_2" "P_val" "Corr_Coef"
"M200000001" "M200000113" "0.530536974203384" "-0.115081242888051"
"M200000001" "M200000113" "0.530536974203384" "-0.115081242888051"
"M200000001" "M200000114" "0.252990706016934" "0.399292132865147"
"M200000001" "M200000115" "0.368094246871692" "0.16456647390621"
"M200000001" "M200000116" "0.78457345841227" "-0.0502948318806314"
"M200000001" "M200000117" "0.874022710686625" "-0.0291832590390869"
"M200000001" "M200000121" "0.199903265024637" "0.232729988792225"
"M200000001" "M200000122" "0.892630363051574" "-0.024845579436259"
"M200000001" "M200000126" "0.27862153489629" "-0.208127935743872"
注意
M200000002 22352 Vim
M200000004 20810 Srm
M200000005 17878 Myf6
M200000006 27061 Bcap31
M200000007 54204 1-Sep
M200000008 71995 Erv3
M200000009 15384 Hnrpab
M200000010 14453 Gas2
M200000011 12054 Bcl7b
M200000012 26572 Cops3
M200000014 17896 Myl4
M200000016 52469 Ccdc56
M200000017 19720 Trim27
M200000019 11434 Acr
答案 0 :(得分:3)
merge(results, notes, by="UniqueID_1", all.x=TRUE)
或者,对于两个音符的情况:
merge(merge(results, notes1, by="UniqueID_1", all.x=TRUE),
notes1, by="UniqueID_2", all.x=TRUE)
您尚未告诉我们您的NAMES列的名称,因此如果每个列中的ID列实际上是UniqueID
,那么您需要执行以下操作:
merge(merge(results, notes1, by.x="UniqueID_1", by.y="UniqueID", all.x=TRUE),
notes1, by.x="UniqueID_2", by.y="UniqueID", all.x=TRUE)
来自notes1
和notes2
的备注将位于不同的列中。
答案 1 :(得分:0)
我仍然不清楚为什么subset
和cbind
不适合你;看起来这样的事情会好起来的。
cbind(Results, Notes1[Results$UniqueID_1,], Notes2[Results$UniqueID_2,])
这将要求Notes表的rownames为ID;也许这就是问题?
rownames(Notes1) <- Notes1$UniqueID
rownames(Notes2) <- Notes2$UniqueID
match
在这样的情况下也很有用;这是merge
在幕后使用的内容。