【发布时间】:2015-11-29 15:21:42
【问题描述】:
我有一个包含邮政编码列的数据框。我还有一个数据框,其中包含邮政编码列表以及它们所属的大都会统计区。我正在尝试根据邮政编码附加 MSA。不保证任一数据框中的邮政编码在另一个数据框中,并且主数据中的每个邮政编码可能会多次出现。数据框以 779 行开始,应以 779 行结束。我试过下面的合并命令
sheet <- merge(sheet, msa, by = "Zip", all.x = TRUE, all.y=FALSE)
但是,生成的数据框有 1881 行。
我也尝试过使用 plyr
test <- join(sheet, msa, by = "Zip")
这也会产生一个包含 1881 行的数据框。
我想我可以用 %in% 和 for 循环来做我想做的事,但我希望有一个命令可以做我想做的事。
提前感谢您的帮助。
【问题讨论】:
-
each zip code in the master data may be seen more than once那么它以比开始时更多的行结尾也就不足为奇了。在msa中多次出现一个邮政编码的情况下,你想怎么办? -
听起来你想要一个
dplyr::left_join(sheet, msa)。试试including at least a little data for easier trouble shooting。 -
@jeremycg
dplyr::left_join等价于merge(... all.x = T, all.y = F)和plyr::join()(默认为type = "left")。这里的问题是如何处理多个匹配,并且 100% 同意需要可重复性。具有所需输出的 5-10 行示例将使事情变得清晰明了。 -
我很笨。我没有意识到 msa 数据框中有重复的值。一旦我在那里删除了重复项,我就没有问题了。我还有其他困难,当我明天发新帖子时,我会确保我拼凑出一个虚拟数据集。我不能使用任何真实的东西,因为它包含敏感信息。