If it's just the geo-distance you need then use SAS function geodistance(). That's how below working code does it.
If you need the information from Google and that's a link we can't just use as well for testing then please provide your working code for a single call. This will make it much easier for us to then propose the "generalized" version without being able to test it.
Ideally the working code you provide is as simple as possible and just contains the part you need help with.
data have_1;
infile datalines truncover dlm=' ';
input (lat_1 long_1) (:best32.);
datalines;
33.60665052 -117.2356103
33.94426376 -117.584795
33.73560974 -116.1868479
33.91821479 -117.464618
33.76410049 -117.0097073
33.763601 -117.0123175
33.57726067 -117.2166387
33.81956554 -116.5271946
33.94678775 -117.5255383
;
data have_2;
infile datalines truncover dlm=' ';
input (lat_2 long_2) (:best32.) provider_pin :$20.;
datalines;
33.907012 -117.470026 MH1192820
33.70836746 -116.2338597 MH1229820
34.10705027 -117.6354387 MH1195216
33.91427037 -117.2916242 MH1257604
33.83029127 -117.235193 MH1207869
34.080484 -117.5785367 MH1241192
34.058434 -117.30392 MH1192780
33.59712084 -117.236783 MH1192855
34.070319 -117.226215 MH1195214
33.52529125 -117.1667247 MH1195215
33.85646951 -117.5559446 MH1192822
34.4247217 -117.3729584 MH1303889
34.099411 -117.626809 MH1192789
34.07225217 -117.4356723 MH1192694
34.03301977 -117.6110217 MH1192776
33.89542399 -117.1912384 MH1241051
33.74745614 -116.9907403 MH1303820
33.907012 -117.470026 MH1192741
33.627034 -117.166653 MH1272023
33.907012 -117.470026 MH1192821
33.787341 -116.379486 MH1203616
34.14095204 -117.2498498 MH1192758
33.93463154 -117.2437705 MH1192837
34.05951494 -117.2232483 MH1000216
33.837615 -116.546767 MH1259388
34.00011234 -117.720855 MH1269921
34.03301977 -117.6110217 MH1192743
34.50508314 -117.3265321 MH1192752
34.072652 -117.435669 MH1192695
33.976325 -117.330414 PI1032934
;
data inter;
set have_2;
do _i=1 to _nobs;
set have_1 nobs=_nobs point=_i;
distance=geodist(lat_1, long_1, lat_2, long_2, 'k');
output;
end;
run;
proc sort data=inter;
by provider_pin distance;
run;
data want;
set inter;
by provider_pin distance;
if first.provider_pin then n=1;
else n+1;
if n<=3 then output;
run;
... View more