如图,前四列是已知变量,第一列城市ID,第二列纬度,第三列经度,第四列哑变量(Y),求第五列wanted。
问题:10个城市中,只要与哑变量为“1”城市的距离小于10km,那么wanted=1,否则wanted=0
我知道stata有一个命令
globdist可以计算两个 坐标 的距离,
并且,levelsof array, local(var) sep(|) clean,可以生成一个类似于(var1|var2|var3|var4|var5|var6|var7|)的数组(array)
疑难1:首先想到做一个循环,可不知道如何在循环里,让stata把Y=1的城市单挑出来。
疑难2:我是将近100万条数据,大约十几万条城市Y=1,globdist会把计算出来的距离生产一个新变量,我循环中,stata放不下100多万个变量。疑难3:如何能返回是具体与哪个城市距离小于10km?
高手有没有直接的命令?非常感谢!
数据dta见附件,我也用dataex输出了(不知道为什么到带着格式,所以附件也加了dta)。