SAS: необходимо подсчитать количество экземпляров на каждый идентификатор

Предположим, у меня есть table1:

id  value1  value2 value3
1   z       null    null
1   z       null    null
1   null    y       null
1   null    null    x
2   null    y       null
2   z       null    null 
3   null    y       null
3   null    null    null 
3   z       null    null


id  value1  value2 value3
1   z       null    null
1   z       null    null
1   null    y       null
1   null    null    x
2   null    y       null
2   z       null    null 
3   null    y       null
3   null    null    null 
3   z       null    null

и у меня есть table2:

id  
1  
2  
3  

Я хочу подсчитать количество значений в каждом столбце для каждого идентификатора, чтобы получить такой вывод. (например, id 1 имеет 2 - z, один y и один x)

 id value1 value2  value3  
  1   2      1      1     
  2   1      1      0   
  3   1      1      0

Сделать это нужно в SAS. Пример этого есть в Oracle, но не в SAS.


person Kon Hai Woh    schedule 10.03.2017    source источник
comment
решение оракула: stackoverflow.com/questions/36057894 /   -  person Kon Hai Woh    schedule 10.03.2017


Ответы (1)


Если я правильно понимаю, это простой запрос с использованием proc sql. Для всех идентификаторов в первой таблице:

proc sql;
    select id, count(val1) as val1, count(val2) as val2, count(val3 as val3)
    from table1
    group by id;
run;

count() подсчитывает количество значений, отличных от NULL, в столбце или выражении.

person Gordon Linoff    schedule 10.03.2017