sql - SAS 中的 PROC SQL - 所有项目对

标签 sql sas

我有一个数据集,我需要在其中查看来自另一个组内的所有项目对。我在下面创建了一个玩具示例来进一步解释。

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;

最佳答案

最简单的方法是在 t1.ID=t2.ID 和 t1.FRUIT 和 t2.FRUIT 上对表进行笛卡尔(完全)连接。这将生成完整的组合集,然后您可以对其进行总结。

关于sql - SAS 中的 PROC SQL - 所有项目对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20202736/

相关文章:

sas - 我更改了列名称,但 SAS PROC REPORT 仍使用旧名称

sas - 根据数据步骤变量检索列

mysql - MySQL修剪或使用子字符串定位获取特定的字符串集

mysql - 多表查询中总和列显示零值

mysql复杂连接三个表的总计

SAS 查找多个数据集的平均值

r - 相同的回归,不同的统计数据(R v. SAS)?

javascript - 使用 SQL 数据创建多维数组

php - 一次从2个不同的表中获取数据而无需连接php

sql - 创建表时的 Postgres 格式