全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3378 8
2011-02-08
有两个data sets A 和B 各含有两个变量,其中一个变量有相同的名字。
data set A:                 data set B:
X Y                             X Z
1 red                           1 brown
1 blue                          1 red                           
3 yellow                       2 yellow
3 green                        3 red
                                    3 pink

问题是这样的。对于相同的X值,如果Y和Z至少有一个值相同,就执行操作M,否则执行操作N。

我不知道有没有什么简单的方法可以实现,我自己的想法是把A和B 通过X merge起来,对于同一个X值下,把Y和Z所以可能的组合都表示出来,然后生成一个新的变量,表示它们是否有值相同。具体说,就是我想生成如下的新dataset C :

X   Y         Z               flag
1   red      brown       0
1   red      red            1
1   blue     brown       0
1   blue     red            0
3   yellow  red            0
3   yellow  pink           0
3   green   red            0
3   green   pink           0

但是我用 PROC MERGE却没有得到我想要的结果,而且即使生成了如上的data set,接下来又怎么做呢?恳请大家帮忙,谢谢 :)
二维码

扫码加我 拉你入群

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

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

全部回复
2011-2-8 16:15:27
复制代码
这样可以得到 y 和 z 至少有一个相同的 x 值,不知道你的 M 和 N是什么,根据实际情况再进一步处理就可以了吧,呵呵~
二维码

扫码加我 拉你入群

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

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

2011-2-8 19:41:01
数据集C是很容易得到的,现在的问题是操作M和N指的是什么,我的理解你这个操作应该是针对Y和Z至少有一个值相同时候的X进行的,所以第一步应该是先区分符合与不符合条件的X
复制代码
代码中的sum_flag不符合条件就为0,否则为非零,它的数值大小表示在同一个X中,有几个符合条件的观测。
二维码

扫码加我 拉你入群

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

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

2011-2-9 10:02:16
M 和 N  是已经编辑好的macro, 直接调用就可以了,所以倒不是问题。我主要是不知道怎么定义调用它们的条件,呵呵。非常感谢hssnow和baoaibaobao的回复

还想请教的是,如果不用proc sql,只用data step是否也能产生这样的新数据集呢?
二维码

扫码加我 拉你入群

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

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

2011-2-10 13:12:41
4# amanda8901
呵呵,纯 data 步的我没想出比较好的,也得用proc sql生成一组宏变量,结合宏再去做。。。
二维码

扫码加我 拉你入群

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

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

2011-2-11 10:26:32
呵呵,之前思维定势啊,走偏了...crackman前辈的一篇博文 http://crackman.net/?p=1194 ,给出了一种处理数据集合并的方法,刚好可以应用在这里,如下:
复制代码
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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