sam*_*pei 6 lookup dictionary replace r dataframe
我有两个数据帧,一个带有'encoded'值,另一个带有一个充当字典的数据帧:
> head( encoded_values )
value
1
2
1
3
> head( dict )
id name
1 foo
2 bar
3 baz
Run Code Online (Sandbox Code Playgroud)
我想通过查找第二个数据帧将第一个数据帧中的值替换为"已解码"值.这应该是结果:
> head( encoded_values )
foo
bar
foo
baz
Run Code Online (Sandbox Code Playgroud)
我发现了许多类似的帖子,但没有针对我的情况.也许这是一个非常常见的操作,但我对R来说很新,并且因为我迄今为止尝试过的所有可能性而完全失败(其中没有一个可行).
非常感谢.
这是match
(注意,快得多merge
)为:
dict[match(encoded_values$value, dict$id), 2, drop=F]
Run Code Online (Sandbox Code Playgroud)
生产(我们需要drop=F
这样一个data.frame
返回,而不是因为我们只选择一列向量):
name
1 foo
2 bar
1.1 foo
3 baz
Run Code Online (Sandbox Code Playgroud)
match
在第二个参数中返回值的第一个参数中的值的位置.然后,您可以使用它来索引第二个参数.
实际替换:
encoded_values$value <- with(dict, name[match(encoded_values$value, id)])
Run Code Online (Sandbox Code Playgroud)
请注意,在这个简单的情况下,因为你的id与行号匹配dict
,你也可以这样做:
dict[encoded_values$value, 2, drop=F]
Run Code Online (Sandbox Code Playgroud)
但这只能起作用,因为id
变量的特殊性dict
(从1开始,每个增加1).