我有以下数据集
| ID|网|typ| cust|步|焦油|项目|项目后缀|部分|线|dtn_cd|地质构造|签署|
| --|--|--|--|--|--|--|--|--|--|--|--|--|
| 10 |ARF| 3 | 2585 | 12 | 100 | 4587 | 800 | 1 | 1 | 1 |ZL-23|+的|
| 10 |ARF| 3 | 2585 | 12 | 100 | 4587 | 800 | 1 | 2 | 1 |ZL-US-22|- -一种|
| 10 |ARF| 3 | 2585 | 12 | 100 | 4587 | 800 | 1 | 3 | 1 |ZL-JP-22|+的|
| 10 |ARF| 3 | 2585 | 12 | 100 | 4587 | 800 | 1 | 4 | 2 |ZL-US-44|+的|
| 10 |ARF| 3 | 2585 | 12 | 100 | 4587 | 800 | 1 | 5 | 2 |ZL-US-66|+的|
| 10 |ARF| 3 | 2585 | 12 | 100 | 4587 | 800 | 2 | 1 | 1 |AP-TN-44|+的|
| 10 |ARF| 3 | 2585 | 12 | 100 | 4587 | 800 | 2 | 2 | 2 |AP-TN-22|- -一种|
| 10 |ARF| 3 | 2585 | 12 | 100 | 4587 | 800 | 3 | 1 | 3 |PQ-AR-44|+的|
| 10 |ARF| 3 | 2585 | 12 | 100 | 4587 | 800 | 3 | 2 | 4 |PQ-AR-22|- -一种|
| 50 |PFP| 3 | 3000 | 12 | 100 | 9999 | 899 | 1 | 1 | 1 |DE-NN-44|+的|
| 50 |PFP| 3 | 3000 | 12 | 100 | 9999 | 899 | 1 | 2 | 2 |DE-NN-22|- -一种|
| 50 |PFP| 3 | 3000 | 12 | 100 | 9999 | 899 | 1 | 1 | 3 |HK-DC-44|- -一种|
| 50 |PFP| 3 | 3000 | 12 | 100 | 9999 | 899 | 1 | 2 | 4 |HK-DC-22|+的|
我想要以下输出
我尝试了以下代码,但它不能正常工作
data table_A;
set table_A;
merge
table_A (where= (DCTN_CD = '1') rename=(GEO_CON=FROM_GEO))
table_A (where= (DCTN_CD = '2') rename=(GEO_CON=TO_GEO))
table_A (where= (DCTN_CD = '3') rename=(GEO_CON=BETWEEN_GEO))
table_A (where= (DCTN_CD = '4') rename=(GEO_CON=AMONGST_GEO))
run;
知道怎么做吗我愿意接受SAS或PROC SQL(DB2)的建议。
1条答案
按热度按时间jyztefdp1#
您需要计算两个合成值:
然后,您可以通过line_group和dtn_seq进行合并。
范例:
你可能会得到一个关于数据不按顺序的错误(因为where=不是required来以任何特定顺序传递行)。如果发生这种情况,您将需要合并四个按line_group dtn_seq顺序传递数据的排序视图。