-1

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ルックアップ テーブルに存在する各列の文字列名を含む、私が作成したベクトルです。

4

1 に答える 1