2013-07-17 143 views
0

我有一列数据,列名为(Daily_Mileage)。我有15种不同类型的每日里程和250行。我希望为每日15个里程分别计数。我在SAS中使用PROC SQL,它不喜欢Cross join命令。我真的不知道我应该做的,但是这是我开始:SAS Proc SQL计数问题

 
PROC SQL; 
select A, B 
From (select count(Daily_Mileage) as A from Work.full where Daily_Mileage = 'Farm Utility Vehicle (Class 7)') a 
cross join (select count(Daily_Mileage) as B from Work.full where Daily_Mileage = 'Farm Truck Light (Class 35)') b); 
QUIT; 

回答

0

您可以先创建者的另一列,再总结该列和GROUP BY Daily_Mileage。如果我误解了你的问题,请告诉我。

PROC SQL; 
    CREATE TABLE tab1 AS 
    SELECT Daily_Mileage, 1 AS Count, SUM(Count) AS Sum 
    FROM <Whatever table your data is in> 
     GROUP BY Daily_Mileage; 
QUIT; 
2

用例语句定义您的计数如下。

proc sql; 
    create table submit as 
    select sum(case when Daily_Mileage = 'Farm Utility Vehicle (Class 7)' 
        then 1 else 0 end) as A, 
     sum(case when Daily_Mileage = 'Farm Truck Light (Class 35)' 
        then 1 else 0 end) as B 
    from Work.full 
    ; 
quit ; 
1

难道你不能只用一个proc频率?

data example ; 
    input @1 Daily_Mileages $5. ; 
datalines ; 
TYPE1 
TYPE1 
TYPE2 
TYPE3 
TYPE3 
TYPE3 
TYPE3 
; 
run ; 

proc freq data = example ; 
    table Daily_Mileages ; 
run ; 

/* Create an output dataset */  
proc freq data = example ; 
    table Daily_Mileages /out=f_example ; 
run ;