楼主: carol1222
1255 4

[问答] 配对两个数据集过程中 添加 一个循环 用以检验条件成立与否 [推广有奖]

  • 5关注
  • 0粉丝

硕士生

41%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1283 点
帖子
157
精华
0
在线时间
74 小时
注册时间
2010-5-6
最后登录
2014-11-13

楼主
carol1222 发表于 2012-6-20 10:47:14 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我有一个子数据集,是这样的。其中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 ;


求各位大神帮忙。。。
二维码

扫码加我 拉你入群

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

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

关键词:数据集 Distance stance output RETAIN 如何

截图07.png (9.52 KB)

截图07.png

花有再开日 人无再少年

沙发
carol1222 发表于 2012-6-20 13:56:58
顶一下。。求解求解啊!!!
花有再开日 人无再少年

藤椅
carol1222 发表于 2012-6-20 15:02:31
求助求助啊~~~~
花有再开日 人无再少年

板凳
carol1222 发表于 2012-6-20 16:10:56
就是两个数据集A和B,我在B里面找跟A配对的ID,然后如果这个ID出现了3次以上,我就不再进行配对了,这样我就能提高我的配对概率。
花有再开日 人无再少年

报纸
carol1222 发表于 2012-6-21 13:42:05
顶一下
花有再开日 人无再少年

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 01:13