2016-09-10 5 views
0

データセット内のパラメータである「id」がすべての隣接する行にある「データ」というデータセットがあります。同じid値を持つ別のデータセット "otherData"がありますが、id値ごとに1行しかありません。 IDの順序は、両方のデータセットで同じです。別の列の値に基づいて列の値をコピーする

"newColumn"列をotherDataからデータにコピーし、id値に基づいてマッピングします。これは私が現在持っているものである:それは、それぞれ固有のID値を反復処理し、data.frameでその値を持つすべての行を見つける必要があるため

sapply(otherData$id, function(id) 
    data$newColumn[data$id == id, ] <- otherData[otherData$id == id, ]$newColumn 
) 

しかし、sapplyは、うんざり遅いです。

もっと速い選択肢がありますか?私はおそらく、同じ "id"値を持つすべての行が互いに隣接しているという事実を利用できるかもしれないと考えました。

答えて

1

単にIDキーとnewColumnに参加するotherDataに2つのデータフレームが、フィルタ列をマージ:

newData <- merge(data, otherData[c("id", "newColumn")], by=c("id")) 
関連する問題