1

我有三张桌子。一个包含结果。另外两个包含有关出现在结果中的唯一 ID 的注释。我将尝试稍微解释一下格式。

结果

UniqueID1 UniqueID2 [包含某些实验结果的列。]

注释1

UniqueID [有关此特定唯一 ID 的说明]

注2

和上面一样。

因此,我希望结果中的每一行都包含 NOTES 表中的注释。我现在迭代地完成这个;这个过程现在比实验本身需要更长的时间。我可能考虑过使用 subsetting 或 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
4

2 回答 2

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将在不同的列中。

于 2012-08-24T21:29:31.840 回答
0

我仍然不清楚为什么subset并且cbind不适合您;看起来像这样的东西可以正常工作。

 cbind(Results, Notes1[Results$UniqueID_1,], Notes2[Results$UniqueID_2,])

这将要求 Notes 表的行名是 ID;也许这就是问题所在?

 rownames(Notes1) <- Notes1$UniqueID
 rownames(Notes2) <- Notes2$UniqueID

match在这种情况下也很有用;这merge是在幕后使用的东西。

于 2012-08-25T01:30:57.997 回答