SAS在数据集

时间:2017-09-20 07:05:05

标签: sas

我正在使用SAS数据集,我想知道如何解决这个问题是SAS。

我正试图为出租车司机寻找独特的游乐设施, 其中A到B和B到A算作一个独特的骑行。

举例说明:

数据集:

Taxidriver_ID From      To        date
------------------------------------------
0123          Address_1 Address_2 1jan2017                  
0123          Address_2 Address_1 1jan2017
0123          Address_3 Address_1 5jan2017
0123          Address_1 Address_3 5jan2017
0123          Address_1 Address_3 6jan2017
0123          Address_4 Address_5 1jan2017

我想将此分类为3个独特的出租车驾驶员0123: 1到2(和反向), 1到3(和反向)和 4到5

我想计算这些独特游乐设施的数量。 在4个游乐设施的例子中 (1到2)一次 (1至3)两次 (4到5)一次

非常感谢帮助!

1 个答案:

答案 0 :(得分:1)

您可以通过select distinct对地址进行最小/最大比较组合来解决您的第一个问题。

data have;
infile datalines;
input taxidriver_id $ from $ to $ date :anydtdte.;
format date date.;
datalines;
0123 Addr_1 Addr_2 1jan2017                  
0123 Addr_2 Addr_1 1jan2017
0123 Addr_3 Addr_1 5jan2017
0123 Addr_1 Addr_3 5jan2017
0123 Addr_1 Addr_3 6jan2017
0123 Addr_4 Addr_5 1jan2017
;
run;

proc sql;
create table want as
select distinct taxidriver_id
               ,ifc(from<to,from,to) as from
               ,ifc(from>to,from,to) as to
from have
;
quit;

你的第二个问题可以通过以下方式得到解答:

proc sql;
create table want as
select taxidriver_id
      ,from
      ,to
      ,count(*) as count
from (
    select distinct taxidriver_id
                   ,ifc(from<to,from,to) as from
                   ,ifc(from>to,from,to) as to
                   ,date
    from have
)
group by taxidriver_id, from, to
;
quit;