简单查找以在R数据帧中插入值

Din*_*ire 12 r lookup-tables

这是一个看似简单的R问题,但我在这里看不到确切的答案.我有一个数据框(alldata),如下所示:

Case     zip     market
1        44485   0
2        44481   0
3        43210   0
Run Code Online (Sandbox Code Playgroud)

有超过350万条记录.

然后,我有第二个数据框,'zipcodes'.

market    zip
1         44485
1         44486
1         44488
...       ... (100 zips in market 1)
2         43210
2         43211
...       ... (100 zips in market 2, etc.)
Run Code Online (Sandbox Code Playgroud)

我想基于alldata $ zip匹配zipcode数据框中的适当值,为每个案例返回alldata $ market的正确值.我只是在寻找正确的语法,并且像往常一样非常感谢帮助.

小智 13

既然你不计较market在列alldata,可以先剥离其关闭,并使用在合并列alldata,并zipcodes根据该zip使用列merge:

merge(alldata[, c("Case", "zip")], zipcodes, by="zip")
Run Code Online (Sandbox Code Playgroud)

by参数指定了键标准,因此如果您有复合键,则可以执行类似操作by=c("zip", "otherfield").


jua*_*sur 6

另一个对我有用的选项非常简单:

alldata$market<-with(zipcodes, market[match(alldata$zip, zip)])
Run Code Online (Sandbox Code Playgroud)

  • 如果您能解释那里发生的事情,那就太好了。 (2认同)