我想知道是否可以在 sas 中使用 proc sql 从宽到长有效地转置。
我知道 proc transpose 比我在下面建议的方法快得多。但我的目标之一是避免存储转置表。
例如,假设我有 table1 作为
Id| A| B| C| D
_____________________
1| 100|3500|6900| 10300
2| 200| 250| 300| 350
3| 150| 32| 400| 204
4| 200| 800|1400| 2000
我想把它变成
id|col1| col2|
______________
1| A| 100|
1| B| 3500|
1| C| 6900|
1| D| 10300|
2| A| 200|
2| B| 250|
2| C| 300|
2| D| 350|
3| A| 150|
3| B| 32|
3| C| 400|
3| D| 204|
4| A| 200|
4| B| 800|
4| C| 1400|
4| D| 2000|
我可以这样做;
select id, 'A' as col1, A as col2
from table1
where A ~=""
union select id, 'B' as col1, B as col2
from table1
where B ~=""
etc
但它的效率非常低。
任何想法?谢谢。