У меня есть следующая таблица
+--------+----------+-----------+
| ID | var_name | var_value |
+--------+----------+-----------+
| 153879 | age | 35 |
+--------+----------+-----------+
| 153879 | gender | Male |
+--------+----------+-----------+
| 153879 | income | 1000 |
+--------+----------+-----------+
| 13527 | age | 18 |
+--------+----------+-----------+
| 13527 | gender | Male |
+--------+----------+-----------+
| 13527 | income | 20 |
+--------+----------+-----------+
| 14416 | age | 40 |
+--------+----------+-----------+
| 14416 | gender | Female |
+--------+----------+-----------+
| 14416 | income | 500 |
+--------+----------+-----------+
Как я могу сделать из этого сводную таблицу, чтобы результат выглядел так
+--------+-----+--------+--------+
| ID | age | gender | income |
+--------+-----+--------+--------+
| 153879 | 35 | Male | 1000 |
+--------+-----+--------+--------+
| 13527 | 18 | Male | 20 |
+--------+-----+--------+--------+
| 14416 | 40 | Female | 500 |
+--------+-----+--------+--------+
Я попытался сделать это, неоднократно оставляя соединение с таблицей таким образом:
data table;
input id $ var_name $ var_value $;
datalines;
153879 age 35
153879 gender Male
153879 income 1000
13527 age 18
13527 gender Male
13527 income 20
14416 age 40
14416 gender Female
14416 income 500
run;
Proc SQL;
Create table have as
Select a.ID
,b.var_value as age
,c.var_value as gender
,d.var_value as income
From (select distinct id from table) as a
Left Join (select * from table where var_name = 'age') as b
On a.id = b.id
Left Join (select * from table where var_name = 'gender') as c
On a.id = c.id
Left Join (select * from table where var_name = 'income') as d
On a.id = d.id;
Quit;
Используя этот код, я получаю требуемые результаты, однако, поскольку реальная таблица в несколько раз больше и включает более 50 переменных, я хотел бы знать, есть ли другой способ сделать это, более эффективный и короткий.
ERROR: The ID value "Income" occurs twice in the same BY group.
Предположим, я хочу суммировать оба значения в одно, как будет выглядеть код? 15.05.2020id
иvar_name
. Я обновил код с этим изменением. Он будет агрегировать и сортировать за один шаг. 15.05.2020