使用存储在另一个 data.frame 中的信息替换 data.frame 中的值的最佳方法?

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

我有两个不同的对象:

AUX <- data.frame(SPANISH = c("Si", "No", "Tal vez"),
                  ENGLISH = c("Yes", "No", "Perhaps"))


TAB <- data.frame(V1 = c(18, 15, 19, 23),
                  V2 = c("Si", "Si", "No", "Si"),
                  V3 = c("Tal vez", "No", "No", "Si"))

我想替换

TAB
中出现的值
AUX
;也就是说,如果 TAB 中有一个“Si”,您想将其替换为“Yes”广告,依此类推。

这是一个玩具示例,我真正拥有的是两个比此处介绍的两个更大的 data.frame。 使用

TAB
中的信息替换
AUX
中的值的最快方法是什么?
我看到了一些关于使用
mutate
的建议,但是有没有更快的替代方案?

提前致谢

r dataframe replace
1个回答
0
投票

这是一种可能的

data.table
方法...我打赌它也可以通过一些巧妙的连接来实现,但是除了huuuge data.tables之外,这应该可以正常工作

library(data.table)
setDT(AUX); setDT(TAB)
# melt to long
TAB.long <- melt(TAB, id.vars = "V1")
# update
TAB.long[AUX, value := i.ENGLISH, on = .(value = SPANISH)]
# cast to wide again
TAB.new <- dcast(TAB.long, V1 ~ variable, value.var = "value")
#       V1     V2      V3
#    <num> <char>  <char>
# 1:    15    Yes      No
# 2:    18    Yes Perhaps
# 3:    19     No      No
# 4:    23    Yes     Yes
© www.soinside.com 2019 - 2024. All rights reserved.