我正在寻找一个类似的函数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
这个查找表有数千行,所以我不能手动输入它们,而且我原来的解决方案效率太低,需要几天才能运行。
我使用的数据框有数百列,例如arrmin
需要atmcond
将值从 97 更改为 Officially Cancelled 等。
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
是我创建的一个向量,其中包含查找表中存在的每一列的字符串名称。