全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1231 4
2012-06-20
我有一个子数据集,是这样的。其中house_id是唯一的,不重复的,来自数据集A。但是BestMatch是从数据集B中找出,会有重复出现,寻找BestMatch的算法就是在数据集B中寻找与house_id距离最近的一个ID。那么数据集B中的ID可能就会重复出现。 截图07.png

现在我需要有一个限定条件就是,如果数据集B中的数据ID出现了超过了3次,那么这个ID就不再被计算在下一次计算距离的数据之内了。要怎么完成这个算法呢?
下面这个是我寻找两个数据集间,最短距离的一个大致方法。要如何改善才能把这个限制条件加进去呢??

Data RowLookUp(Keep = city StartRow EndRow) ;
Retain StartRow ;
Set B;
by city ;
if first.city then StartRow = _N_ ;
if last.city then do ;
        EndRow = _N_ ;
        Output ;
end ;
run ;

Data Match (Keep = House_id BestMatch BestDistance) ;
Array RQn(2:&NumQs) q2-q&NumQs ;
Array DQn(2:&NumQs) dq2-dq&NumQs ;
Retain BestMatch BestDistance ;
Merge A RowLookup ;
by city ;

do RowNum = StartRow to EndRow ;
        Set B Point=RowNum ;
        Distance = 0 ;
        do i = 2 to &NumQs ;
                Distance = Distance + ((RQn(i) - DQn(i))**2) ;
                if Distance ge BestDistance then do ;
                        if RowNum ne StartRow then i = &NumQs+1 ;
                end ;
        end ;
        if RowNum eq StartRow or Distance lt BestDistance then do ;
                BestDistance = Distance ;
                BestMatch = DHouse ;
        end ;
end ;
Output ;
run ;


求各位大神帮忙。。。
附件列表
截图07.png

原图尺寸 9.52 KB

截图07.png

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-6-20 13:56:58
顶一下。。求解求解啊!!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-6-20 15:02:31
求助求助啊~~~~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-6-20 16:10:56
就是两个数据集A和B,我在B里面找跟A配对的ID,然后如果这个ID出现了3次以上,我就不再进行配对了,这样我就能提高我的配对概率。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-6-21 13:42:05
顶一下
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群