2015-01-16 1 views
0

Я изо всех сил пытаюсь преобразовать одномерный стол в многомерную таблицу в sas. Я бы сказал, что «одномерный стол» я имею в виду, может быть, еще многовариантный стол ... но вот пример:конвертировать одномерный стол в многомерную таблицу в sas

a b c 1001 1 4 8 1001 2 3 7 1002 11 9 6 1002 5 14 15

Я хочу, чтобы это было как:

a1 b1 c1 a2 b2 c3 1001 1 4 8 2 3 7 1002 11 9 6 5 14 15

, так как я имеют тысячи идентификаторов (например, 1001-3000). есть простой способ, которым я могу перевернуть стол вокруг?

Большое спасибо!

+0

Число записей в каждом ID одинаково? Если нет, знаете ли вы максимальное число раньше времени? – DomPazz

+2

Proc transpose может это сделать. Вот учебник: http://www.ats.ucla.edu/stat/sas/modules/ltow_transpose.htm – jaamor

+0

Большое спасибо Jaamor! @. @ Я думал, может быть один шаг proc. – shakedong93

ответ

0

Не простой способ, поскольку вы выполняете несколько значений. Вы можете сделать транспонирование 3 раза - один раз для каждого значения и объединить по ссылке из @jaamor. Или вы можете выполнить полуавтоматический шаг ввода данных. Это предполагает максимальное количество 2. Если у вас более 2 на ID, вы можете вычислить max и поместить его в макропеременный параметр. Затем замените 2 в коде макрокомандой.

data want; 
set have; 
by id; 

array _a(2) a1-a2; 
array _b(2) b1-b2; 
array _c(2) c1-c2; 

retain a: b: c:; 


if first.id then count=1; 
else count+1; 

_a(count)=a; 
_b(count)=b; 
_c(count)=c; 

if last.id then output; 

drop a b c count; 

run; 
Смежные вопросы