2012-05-20 2 views
0

enter image description here У меня есть этот набор данных здесь, который выглядит следующим образом:Транспонирование один столбец в наборе данных, но по годам и еще один столбец

В основном я хочу, чтобы манипулировать набор данных, так что у меня есть GVKEY1, как уникальный например, 1004, а затем уникальный номер года, такой как 1996, затем несколько gvkey2 после этого. Однако количество gvkey2 для каждого года не одно и то же. Кто-нибудь знает, как обойти эту проблему? Это означает, что у меня будет несколько 12 строк данных для gvkey1 для 1004, так как у меня есть годы с 1996 по 2008 год. Тогда на каждый год у меня будет много столбцов, где каждый столбец будет иметь gvkey2.

С наилучшими пожеланиями,

Naz

ответ

0

Я не уверен, что я понял ваш вопрос, но если вы ищете для уникального пара gvkey1/года, вы могли бы сделать что-либо из них:

proc sql; 
create table results as 
select distinct gvkey1, year 
from _your_data_set; 
quit; 

или

proc sort data=_your_data_set(keep=gvkey1 year) out=results nodupkey; 
by gvkey1 year; 
run; 

Если это не то, что вы ищете, я предлагаю проводке пример желаемых результатов.

3

Можете ли вы не просто использовать PROC TRANSPOSE?

proc sort data=your_data_set out=temp1; 
    by gvkey1 year; 
run; 

proc transpose data=temp1 out=temp2; 
    by gvkey1 year; 
    var gvkey2; 
run; 

Это даст вам ряд переменных COL1 - COLX. Используйте опцию PREFIX для разных имен переменных.

+1

Я думаю, вам нужно добавить 'year' в качестве переменной BY в proc transpose. В противном случае это будет простейшим решением. – Longfish

+0

@ Keith - Спасибо, ты прав. Я обновил. – DavB