R 重新编码缺少级别的多个变量

R 重新编码缺少级别的多个变量,r,statistics,plyr,recode,R,Statistics,Plyr,Recode,我有一个数据框架,有许多列整数变量,每个变量代表食物频率问卷上的一个特定问题。我想将这些列重新编码为数字变量,表示每月食用的食物的份数mapvalues()似乎是正确的功能,但我不断收到警告消息,因为并非所有食物都记录了完整范围的响应: The following `from` values were not present in `x`: 4, 5, 6, 7, 8 设置warn\u missing=false不会返回警告消息,但我的数据仍然没有被重新编码 示例代码(钉子是我的数据框,foo

我有一个数据框架,有许多列整数变量,每个变量代表食物频率问卷上的一个特定问题。我想将这些列重新编码为数字变量,表示每月食用的食物的份数<
plyr
中的code>mapvalues()似乎是正确的功能,但我不断收到警告消息,因为并非所有食物都记录了完整范围的响应:

The following `from` values were not present in `x`: 4, 5, 6, 7, 8
设置
warn\u missing=false
不会返回警告消息,但我的数据仍然没有被重新编码

示例代码(钉子是我的数据框,foodnames是变量名列表):


即使这些变量不包含从1到8的所有整数,如何让R重新编码这些变量?提前感谢。

请展示一个可复制的小示例。我们不需要
eval(parse
为此,这里有一个可复制的示例:
df另一方面,此代码正确地重新编码了C:
df$C
for (food in foodnames[c(7:81, 95:97)]){
  mapvalues(eval(parse(text=paste("nails$", food))), from = c(1:8),
            to = c(0, 1, 2.5, 4, 8, 14, 22, 28)), warn_missing = FALSE)
}