FindReplace
単一の値ではなく、ベクトルに基づいて値をマップできるような関数を探しています。
データフレームの値をマップするために使用したい、このようなルックアップ テーブルがあります。
Headers: COLUMN_NAME, CODE, DESCRIPTION
Row1: arrmin, 97, Officially Cancelled
Row2: arrmin, 98, Unknown if Arrived
Row3: atmcond, -1, Blank
Row4: atmcond, 0, No Additional Atmospheric Conditions
このルックアップ テーブルには何千もの行があるため、手動で入力することはできません。元のソリューションは非効率的で、実行に数日かかります。
私が使用しているデータフレームには、値を 97 から Officially Cancelled に変更する必要があるなどarrmin
、何百もの列があります。atmcond
0 から 100 までの値 (または多くの値が存在する) は、それがどの列にあるかによって変化します。以下にこのコードを書きましたが、実際には非効率的であり、300k 行を実行するには数日かかります。
columnsToReplace <- which(colnames(CRASH) %in% CapitalColumns)
dfColumns <- colnames(CRASH)
for (i in columnsToReplace){
tempColumn <- dfColumns[i]
tempLookup <- capitalLookupTable[which(capitalLookupTable$COLUMN_NAME ==tempColumn),]
CRASH <- FindReplace(data=CRASH,Var=tempColumn,replaceData = capitalLookupTable,
from = "Code",to = "Description",exact=T)
}
columnsToReplace
ルックアップ テーブルに存在する各列の文字列名を含む、私が作成したベクトルです。