【发布时间】:2020-06-03 14:40:35
【问题描述】:
想象一下,我有一个从某人给我的大型 csv 加载的数据框,其中包含我想应用于其他数据集的数据映射/重新编码。这是 csv 中可能包含的内容的一个可重复的小示例:
library(wakefield)
csv_mapping <- data.frame(
from = as.character(name(30)),
to = as.character(likert_7(30))
)
以独立于 csv 数据源的方式从此数据帧创建映射函数的最快方法是什么?我通常会通过运行来做到这一点:
dput(csv_mapping$from)
dput(csv_mapping$to)
在我的控制台中,然后我会将向量复制并粘贴到一个函数中并使用 plyr::mapvalues(),如下所示:
mapping_fn <- function(x) {
fromvec <- c("Kameira", "Sanavi", "Avangelene", "Maryonna", "Wyvonna", "Enam",
"Yain", "Tyonna", "Shekira", "Eleanna", "Azriela", "Saajida",
"Chantee", "Julieanne", "Genisha", "Delesha", "Macenzi", "Alyasia",
"Latonga", "Josuhe", "Arter", "Stone", "Ramaj", "Lilinoe", "Zacharie",
"Joshuamichael", "Desseray", "Colorado", "Jaidn", "Verline")
tovec <- c("Agree", "Somewhat Disagree", "Agree", "Agree", "Neutral",
"Somewhat Disagree", "Neutral", "Strongly Agree", "Somewhat Disagree",
"Disagree", "Strongly Disagree", "Disagree", "Somewhat Agree",
"Strongly Disagree", "Strongly Disagree", "Somewhat Agree", "Strongly Agree",
"Somewhat Agree", "Disagree", "Disagree", "Strongly Agree", "Strongly Disagree",
"Disagree", "Somewhat Agree", "Strongly Disagree", "Strongly Disagree",
"Neutral", "Somewhat Agree", "Agree", "Disagree")
plyr::mapvalues(x, from = fromvec, to = tovec, warn_missing = F)
}
鉴于 plyr 现在被认为已退役,是否有更聪明或更快捷的方法可以在不使用 mapvalues 的情况下做到这一点?
【问题讨论】: