2017-07-11 8 views
0

私は次のように2つのデータフレームを持っている:1つのデータフレームを検索して検索し、別のデータフレームに置き換える方法は?

df1 = data.frame(a = c(1, 2, 3, 4, 507, 505), b = c(10, 20, 30, 40, 50, 60)) 
df2 = data.frame(A = c(501, 502, 503, 504, 505, 506, 507), 
       B = c(601, 602, 603, 604, 605, 606, 607)) 

私はdf2$Adf1$aに等しいためdf1$bの値を見つけたいです。この簡単な例では、私はdf1$a == df2$Aで50と60を探しています。

私は次のことを試してみました:常に大きなデータセットの順で値を返すない

df1$b[which(df2$a %in% df1$A)] 

。例えば、私のように、すなわちFTNdf1df2と同様top_listより洗練されたデータセットを上記と類似の以下の手順を使用する場合:

top_list$performance <- FTN$YIELD_MEAN_NBR[which(as.character(FTN$PLOT_GRID_ID) %in% top_list$gridID)] 

次の行は、私が期待と同じ値を返しません。

ID = "62927530" 
    FTN$YIELD_MEAN_NBR[FTN$PLOT_GRID_ID == ID] 
    top_list$performance[top_list$gridID == ID] 

これは私を困惑させる!

+0

。私は大規模なデータフレームに適用可能なat-once解決を探しています。ありがとう! – Rotail

+0

なぜ彼らは同じ値を返すべきですか?それらは2つの異なるデータフレームから2つの列です。私はそれらの間に直接の関係は見ません。 – Psidom

答えて

2

あなたは他の方法で回避、df2$Adf1$aをチェックする必要はありません:私はところでループによってそれを行う方法を知っている

df1$b[df1$a %in% df2$A] 
# [1] 50 60 
+0

ありがとうございます。しかし問題は、必ずしも順番に物事を返すとは限らないということです。問題をよりよく伝えるために質問を修正しました。 – Rotail

関連する問題