如何使用另一个数据帧作为键在一个数据帧中“翻译”变量?

问题描述 投票:1回答:4

我有一个带有两个字符串变量的数据框,并希望使用一个单独的“键”数据框将它们转换为数值。下面的示例已简化,但我需要能够将其应用于基于将始终不为a = 1,b = 2等的任意键来替换V1和V2变量的内容。

示例:

set.seed(1)
x <- data.frame(
    V1 = sample((letters), 10, replace=TRUE),
    V2 = sample((letters), 10, replace=TRUE)
)
key <- data.frame(letters, 1:26)

我需要对照键引用V1的第一个元素,用相应的值替换(例如a = 1,b = 2,等等),对第二个元素执行相同的操作,然后在完成V1时继续并对V2执行相同的操作

我一直在努力使用lapply()和sub()制定一个解决方案,但一直陷于困境,因为我看不到传递sub()函数的方法超过了1:1的比较。我应该使用其他功能吗?

原谅我-我确定解决方案一定很简单,但我对R还是很陌生。

我有一个带有两个字符串变量的数据框,并希望使用一个单独的“键”数据框将它们转换为数值。下面的示例已简化,但我需要能够将其应用于...

r
4个回答
0
投票

您可以使用data.table创建查找表,然后使用apply沿数据框的列应用映射:


0
投票

您可以在基数R中使用unlistmatch


0
投票

您可以将apply与行和列的边距一起使用,例如as.data.frame(apply(x, c(1,2), function(l) key[key$letters == l,c(2)]))


0
投票

base R有两种制作方法:

© www.soinside.com 2019 - 2024. All rights reserved.