欢迎光临散文网 会员登陆 & 注册

从韦恩图看统计编程语言上的 merge/join

2021-07-22 22:27 作者:陆震同学  | 我要投稿

挖了很久的坑,要来回填了。

首先上韦恩图(Venn Diagram):

无论是SAS,R,Python,Stata,还是SPSS,关于merge(或者是各种形式的join,如inner joinCartesian Product)数据集的操作原理都是上面的韦恩图范畴之内,不同的只是代码形式。万变不离其宗。

学习之余来玩一个游戏:

现在我有7个点,或者直接是7个城市,希望你给我做一个每两个城市之间连线的数据集,希望越简单越好。

这里我们拿 SAS 来做,对于上面其他 4 种统计编程语言,有感兴趣的小伙伴可以尝试做一下。

首先我们随意给定一个数据集:

data cities;
input pointid city $12.;
cards;
1   LosAngeles
2   Orlando
3   London
4   NewYork
5   Boston
6   Paris
7   Washington
8   LosAngeles
9   Orlando
10  London
;
run;

proc sql;
 create table discity  as
 select distinct city
 from cities;
quit;

proc print data=discity;
 title "Distinct Cities";
 format city $12.;
run;

原理上很简单,7 个城市之间任意两点连线,是个排列组合问题,对于不重复的连线,应该是7*6/2 =21条。

我们是这么操作的:

proc sql;
  create table pair_cities as
  select f1.city as orig ,
         f2.city as dest
   from  discity  as f1 , discity as f2
  where f1.city ne ' ' & f1.city < f2.city
  order by f1.city, f2.city;
quit;

title 'All Possible Paired Places';
proc print data=pair_cities;
 format orig dest $12.;
run;

鼓励小伙伴拿其他编程语言也来尝试一下。



从韦恩图看统计编程语言上的 merge/join的评论 (共 条)

分享到微博请遵守国家法律