在flodel的帮助下,我找到了一种用查找表中的值标签替换数字代码的方法。
像我一样雄心勃勃,我现在想把它变成一个函数。此外,我有很多查找表需要快速查找我的数据,这样一个函数就会很方便。
但首先是一些样本数据,从数据框开始,
df <- data.frame(id = c(1:6),
profession = c(1, 5, 4, NA, 0, 5))
df
# id profession
# 1 1
# 2 5
# 3 4
# 4 NA
# 5 0
# 6 5
以及一个包含有关职业代码的人类可读信息的查找表,
profession.lookuptable <- c(Optometrists=1, Accountants=2, Veterinarians=3,
`Financial analysts`=4, Nurses=5)
flodel向我展示了如何用查找表中的值标签替换数字代码。像这样,
match.idx <- match(df$profession, profession.lookuptable)
df$profession <- ifelse(is.na(match.idx),
df$profession, names(profession.lookuptable)[match.idx])
df
# id profession
# 1 Optometrists
# 2 Nurses
# 3 Financial analysts
# 4 <NA>
# 5 0
# 6 Nurses
我现在想把它放到一个函数中,我可以在其中声明数据框df
和变量的名称,profession
并让函数负责其余的工作。
我这样定义我的功能,
ADDlookup <- function(orginalDF, orginalVAR) {
DF.VAR <- paste(orginalDF, "$", orginalVAR, sep="")
lookup.table <- paste(orginalVAR, ".lookuptable")
match.idx <- match(DF.VAR, lookup.table)
DF.VAR <- ifelse(is.na(match.idx), DF.VAR, names(lookup.table)[match.idx])
}
但显然这不起作用
ADDlookup(df, profession)
我得到了错误的混乱
Error in paste(orginalDF, "$", orginalVAR, sep = "") :
object 'profession' not found
现在,这就是我卡住的地方。
谁能告诉我需要阅读什么手册页,或者可能是关于如何解决这个问题的友好提示?
感谢您的阅读。