在我的“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'
答案 0 :(得分:2)
使用R
merge
功能:
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
中。
答案 1 :(得分:0)
使用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'