我有一个数据集,我需要在其中查看来自另一个组内的所有项目对.我在下面创建了一个玩具示例以进一步解释.
BUNCH FRUITS
1 apples
1 bananas
1 mangos
2 apples
3 bananas
3 apples
4 bananas
4 apples
Run Code Online (Sandbox Code Playgroud)
我想要的是列出所有可能的对,并将它们在一堆中出现的频率相加.我的输出理想情况如下:
FRUIT1 FRUIT2 FREQUENCY
APPLES BANANAS 3
APPLES MANGOS 1
Run Code Online (Sandbox Code Playgroud)
我的最终目标是制作一些我最终能够导入Gephi进行网络分析的东西.为此我需要一个Source和Target列(又名上面的FRUIT1和FRUIT2).
我认为还有其他一些方法可以在不使用PROC SQL(也许使用PROC TRANSPOSE)的情况下解决这个问题,但这是我开始的地方.
解
谢谢您的帮助.以下示例代码适用于对类似内容感兴趣的人:
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;
Run Code Online (Sandbox Code Playgroud)