回答

收藏

SAS中的PROC SQL-所有项目对

技术问答 技术问答 239 人阅读 | 0 人回复 | 2023-09-14

我有一个数据集,需要查看来自另一组的所有项目。我在下面创建了一个玩具示例来进一步解释。) W) B) c3 Q) d6 B4 i8 m9 W
BUNCH    FRUITS        apples        bananas        mangos2          apples3          bananas3          apples4         bananas4         apples我想要的是列出所有可能的对,并总结它们在一个束中出现的频率。理想情况下,我的输出如下:
, n* h3 P& Y( pFRUIT1    FRUIT2     FREQUENCYAPPLES    BANANAS    3APPLES    MANGOS     1我的最终目标是制作一些最终导入Gephi网络分析。为此,我需要一个Source和Target列(即上面的FRUIT1和FRUIT2)。9 p% l  U3 A' i) r: t& h
我认为还有其他方法可以不用PROC SQL(也许使用PROC TRANSPOSE)解决这个问题,但这是我的开始。
# _2 z& T* L+ g4 `7 E4 Z解决方案% ?( {  i# d3 c: R: O1 |
谢谢你的帮助。以下示例代码适用于对类似内容感兴趣的人:5 |/ x% r8 z# \% ?
proc sql;    create table fruit_combo as    select a.FRUIT as FRUIT1,b.FRUIT as FRUIT2,count(*) as FREQUENCY    from FRUITS a,FRUITS b    where a.BUNCH=b.BUNCH and and not a.FRUIT= b.FRUIT    group by FRUIT1,FRUIT2;    quit;                ; j2 A0 f/ w+ W9 L
    解决方案:                                                                2 e' e$ Y4 s$ W8 G* j, n4 R$ e" j
                                                                最简单的方法是t1.ID = t2.ID和t1.FRUIT和t2.FRUIT笛卡尔(完全)连接上对表。这将产生一个完整的组合集,然后总结它。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则