【发布时间】:2015-01-18 04:21:33
【问题描述】:
我有一个数据集,我需要在其中查看来自另一个组的所有项目对。我在下面创建了一个玩具示例来进一步解释。
BUNCH FRUITS
1 apples
1 bananas
1 mangos
2 apples
3 bananas
3 apples
4 bananas
4 apples
我想要的是所有可能对的列表,并将它们在一堆中一起出现的频率相加。理想情况下,我的输出应该是这样的:
FRUIT1 FRUIT2 FREQUENCY
APPLES BANANAS 3
APPLES MANGOS 1
我的最终目标是制作一些我最终能够导入 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;
【问题讨论】: