我有一个数据集,我需要在其中查看来自另一个组的所有项目对。我在下面创建了一个玩具示例来进一步解释。
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 进行网络分析的东西。为此,我需要一个源和目标列(又名上面的 FRUIT1 和 FRUIT2)。
我认为还有一些其他方法可以在不使用 PROC SQL 的情况下解决这个问题(也许使用 PROC TRANSPOSE),但这就是我开始的地方。
SOLUTION
谢谢您的帮助。下面的示例代码适合对类似内容感兴趣的任何人:
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;
最简单的方法是在 t1.ID=t2.ID 和 t1.FRUIT ne t2.FRUIT 上对表进行笛卡尔(完全)连接。这将生成完整的组合集,然后您可以对其进行总结。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)