【发布时间】:2021-07-21 19:53:13
【问题描述】:
我正在尝试使用包含 30 个左右变量的 data.frame。这些变量都有不同的数值(例如,“0”或“32”)。数值映射到字符串(例如,在变量 Q1 中,“0”是“Urban”;在变量 Q6 中,“32”是“不可用”)。
我在网上看到了 recode 的一些用途,还有一个旧的 plyr 包进行了这种映射,以及 match 函数,但我没有找到任何与我所拥有的确切结构相匹配的东西。
我在下面提供了一个可重现的示例:
test <- as.data.frame(c("1", "2", "3"))
colnames(test) <- "Q1"
dictionary <- as.data.frame(c("1", "2", "3"))
dictionary$values <- c("dog", "fish", "cat")
dictionary$question <- c("Q1", "Q1", "Q1")
colnames(dictionary)[1] <- "keys"
所以,在这里,dictionary$question 包含要映射到的问题;然后“键”和“值”提供映射。因此,在测试数据框中,我有一个变量 (Q1),它采用三个可能的值,“1”、“2”或“3”。我需要将它们映射回“狗”、“鱼”、“猫”。
但我需要一种自动方式将目标数据框中的列映射到字典中的行,然后转换值,因为实际上我有超过 1000 个可能的值和 30 个变量。
编辑:我期望的是这样的函数或命令:
fun(test, dictionary)
输出:带有c("dog", "fish", "cat") 的data.frame。
或者,如果测试是c("1", "1", "1"),那么它将是c("dog", "dog", "dog")
【问题讨论】:
标签: r dictionary match