2つの大きなデータフレームがあります(両方とも+ -300k行)。データフレームAには、遺伝子に関する情報が含まれています。特定の値が重複している場合は、データフレームBからこのデータフレームに情報を追加したいと思います。df.B $ X1 = df.A $ X1&df.B $ X2 = df.A $ X2であるdf.Bの行が存在する場合、df.B $ X3の値を新しい値に追加する必要があります。 df.A(df.A $ X3)の列、特に右側の行。基本的に、列X1とX2に基づいてdf.Aとdf.Bをマージします。私はforループから始めましたが、もっと簡単な方法があるはずです...私の質問を十分に説明したことを願っています。
ありがとう!
> df.A
X1 X2
1 1 1
2 1 2
3 1 3
4 2 1
5 2 2
6 2 3
> df.B
X1 X2 X3
1 1 1 0.5
2 1 8 0.3
3 1 9 0.2
4 2 2 0.4
5 2 9 0.3
6 2 10 0.2
望ましい結果:
> df.A
X1 X2 X3
1 1 1 0.5
2 1 2 NA
3 1 3 NA
4 2 1 NA
5 2 2 0.4
6 2 3 NA
左結合が必要
library(dplyr)
df.A %>% left_join(df.B, by = c("X1","X2"))
library(data.table)
merge(setDT(df.A), setDT(df.B), all.x = TRUE, by = c("X1","X2"))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加