1

私は3つのテーブルを持っています。結果が含まれているもの。他の2つには、結果に表示される一意のIDに関するメモが含まれています。フォーマットについて少し説明してみます。

結果

UniqueID1UniqueID2[いくつかの実験の結果を含む列。]

注1

UniqueID[この特定の一意のIDに関する注意]

注2

同上。

したがって、結果のすべての行にNOTESテーブルのメモを含める必要があります。私は今、これを繰り返し達成しています。このプロセスは、実験自体よりも時間がかかります。サブセットやラップを使用することを検討しましたが、適切なものが見つからないようです。

考慮すべきいくつかの事柄。

結果について:結果の2つのUniqueID列は互いに素です。それらはセットではありません。それらには繰り返しが含まれています。ただし、一意のIDの各ペアは、結果で1回だけ発生します。テーブル。

注について:一意の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)

または、2 つのメモの場合:

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 に答える