2016-04-30 59 views
0

我有一個表顯示3 obs和4字段(ID姓,名和電話號碼)爲每個ID和我更喜歡轉置姓氏到3字段和名字字段,我想只保留與姓氏和電話號碼相關聯的姓名,我只想保留與第三(姓氏)姓氏相關的姓名。移調數據,只保留需要obs

Table: 

ID Lastname FirstName TelephoneNumber 
001 Y  A   123 
001 W  B   345 
001 Z  C   567 
002 M  D   789 
002 N  E   912 
002 L  F   934 



Table want: 
ID LastName_1 LastName_2 LastName_3 FirstName TelephoneNumber 
001 Y   W   Z   A   567 
002 M   N   L   D   934 

任何人都可以幫忙嗎?

+0

到目前爲止您嘗試過了什麼?你應該表現出一些自己的努力。確保你已經閱讀:http://stackoverflow.com/help/how-to-ask – tfv

+0

我試過的代碼是先用姓氏和合並將它們分開。這種方法起作用。但我只是想更有效率。 – jen

回答

0

您可以使用PROC SUMMARY IDGROUP來做到這一點。我會留給你研究語法。

data id; 
    input (ID Lastname FirstName)(:$3. 2*:$1.) TelephoneNumber; 
    cards; 
001 Y  A   123 
001 W  B   345 
001 Z  C   567 
002 M  D   789 
002 N  E   912 
002 L  F   934 
;;;; 
    run; 
proc print; 
    run; 
proc summary nway; 
    class id; 
    output 
     out=id2 
     idgroup(out(firstname)=) 
     idgroup(last out(telephonenumber)=) 
     idgroup(out[3](lastname)=) 
     ; 
    run; 
proc print; 
    run; 
+0

謝謝。如果我想將這個輸出數據用作其他輸入,代碼應該如何? – jen

+0

@jen我修改了輸出語句以包含OUT =選項來命名由OUTPUT語句創建的數據集。 –

+0

謝謝。如果有更多的字段(例如,地址,省),地址遵循與firstname相同的規則,並且省份正在將銷售規則作爲電話號碼,那麼代碼將如何更改? – jen