私は、以下のようにdf1
とdf2
を1つのデータフレームを持っている:私はAAにDF1のA1とA2を比較したいRで3つのdata.framesを使用して二重にシードされた "if"ループを作成する方法は?
Input_SNP SDS
1:3344877 NA
1:3345145 NA
1:3345216 NA
1:3345705 NA
1:3346348 NA
1:3346403 NA
と:私はのような第三データフレーム(DF3)を持っている
# data
df1 <- read.table(text = "
SNP CHR BP A1 A2 zscore P CEUmaf LOC
rs58043752 1 3344877 A G 0.289 0.7726 . 1:3344877
rs2483242 1 3345145 A T 0.393 0.6946 . 1:3345145
rs1572039 1 3345216 T C 0.443 0.658 . 1:3345216
rs1537407 1 3345705 T C -0.289 0.7726 . 1:3345705
rs2493277 1 3346348 C G -1.552 0.1207 0.09167 1:3346348
rs11583353 1 3346403 C T -0.414 0.6786 0.875 1:3346403",
header = TRUE, stringsAsFactors = FALSE)
df2 <- read.table(text = "
CHR POS ID AA DA DAF SDS LOC
1 3344877 rs58043752 G A 0.1095 0.80517243505521 1:3344877
1 3345145 rs2483242 T A 0.5746 0.741513997303754 1:3345145
1 3345216 rs1572039 T C 0.0784 0.130228249846394 1:3345216
1 3345705 rs1537407 C T 0.798 0.275710355505832 1:3345705
1 3346348 rs2493277 G C 0.5737 0.283452115383779 1:3346348
1 3346403 rs11583353 C T 0.2238 -0.0246952604330743 1:3346403",
header = TRUE, stringsAsFactors = FALSE)
DAをdf2とし、第3のdf3まで出力する。次のように私のロジックは次のとおりです。
df1
でdf1$zscore
が正の場合: 私はdf1$A1 == df2$DA
場合ははい、私はdf3$SDS
にdf2$SDS
を置きたい場合は、見てみたいです。df1$A1 == df2$AA
の場合、df2$SDS
のNEGATIVEをdf3$SDS
に入力します。df1
でdf1$zscore
が負の場合: はい、私はその後、私はdf3$SDS
df2$SDS
のNEGATIVEを置きたい、
df1$A2 == df2$AA
場合
df3$SDS
に
df2$SDS
を置きたい場合、私は、
df1$A2 == df2$DA
かどうかを確認したいです
最終的な出力は次のようになります:
Input_SNP SDS
1:3344877 0.805
1:3345145 0.742
1:3345216 -0.130
1:3345705 -0.276
1:3346348 -0.283
1:3346403 -0.025
あなたは 'dput()'とデータサンプルを投稿してくださいもらえますか? df1とdf2を条件と比較するループを作成してみませんか?何か不足していますか? – nevrome
"SNP CHR BP"列でマージを使用し、ロジックを使用してフィルタリングします。 – zx8754
[データフレーム(内部、外部、左、右)を結合(マージ)する方法]の可能な複製?](http://stackoverflow.com/questions/1299871)? – zx8754