'Matching' R 中的对应关系

'Matching' Correspondence in R

在我的 "dataset1" 中,我有一种字典,其中每个代码对应一个状态。在我的第二个数据集中,"dataset2",我想将代码匹配到正确的状态。我希望有一个通用的矢量化解决方案。

输入:

dataset1               

 V1         V2
001   'State1'
005   'State2'
011   'State3'
011   'State3'
005   'State2'
dataset2

 V1
011
001
011
005

期望的输出:

011   'State3'
001   'State1'
011   'State3'
005   'State2'

使用Rmerge函数:

result <- merge(unique(dataset1), dataset2, by = "V1", all.x=FALSE, all.y=TRUE)

> result
   V1     V2
1 001 State1
2 005 State2
3 011 State3
4 011 State3

这将包括来自 dataset2 的所有州,但仅包括来自 dataset1 唯一 个州,前提是它们出现在 dataset2 中。

另一种使用 match 的方法。请注意,对于 dataset1 中的多个条目,match 将使用遇到的第一个条目。

dataset3 <- data.frame(V1=dataset2$V1, 
                       V2=as.character(dataset1$V2[match(x = dataset2$V1, 
                                                         table = dataset1$V1)]))

并具有准确的格式:

cat(sprintf("%003.0f  '%s'\n", ds3$V1, ds3$V2))
# 011  'State3'
# 001  'State1'
# 011  'State3'
# 005  'State2'