13

これは一見単純な R の質問ですが、ここでは正確な答えはわかりません。次のようなデータ フレーム (alldata) があります。

Case     zip     market
1        44485   NA
2        44488   NA
3        43210   NA

350 万件以上のレコードがあります。

次に、2 番目のデータ フレーム「zipcodes」があります。

market    zip
1         44485
1         44486
1         44488
...       ... (100 zips in market 1)
2         43210
2         43211
...       ... (100 zips in market 2, etc.)

郵便番号データ フレームの適切な値に一致する alldata$zip に基づいて、各ケースの alldata$market の正しい値を見つけたいと思います。私は正しい構文を探しているだけです。いつものように、支援をいただければ幸いです。

4

5 に答える 5

14

marketの列は気にしないのでalldata、最初に を使用して列を削除し、 を使用して列を結合し、列にalldata基づいzipcodeszipを使用できmergeます。

merge(alldata[, c("Case", "zip")], zipcodes, by="zip")

パラメーターはキーのby基準を指定するため、複合キーがある場合は、次のようにすることができますby=c("zip", "otherfield")

于 2013-07-24T20:48:21.197 に答える
9

私のために働いた別のオプションは非常に簡単です:

alldata$market<-with(zipcodes, market[match(alldata$zip, zip)])
于 2017-07-28T13:56:27.747 に答える