2015-12-21 81 views
0

我有一個數據集是按以下格式:SQL/SAS編碼懷疑

Customer_ID Var1 Var2 Marketing_Channel 
    1   B C   D 
    1   B C   E 
    2   F G   H 
    2   F G   I 
    2   F G   J 

我想要的結果在下面的格式:

Customer_ID Var1 Var2 Marketing_Channel Marketing_Channel1 Marketing_Channel2 
    1   B C   D E 
    2   F G   H I J 

等等,總之我想對於customer_ID只有一行,其中列出了該客戶的所有可能的營銷渠道。 我想在SQL/SAS中執行此操作。我怎樣才能做到這一點?
任何幫助將不勝感激

+0

N.b.您可能在另一個StackExchange站點上有更好的響應,因爲您的問題更多地是關於編碼而不是統計方法。 –

回答

0

這被稱爲「重整」您的數據從「長」到「寬」格式。

在本機SAS中,您可以使用proc轉置。檢查SAS文檔。另請參閱

[不確定最簡單的方法,如果你堅持SQL,對不起。您可能對另一StackExchange現場更好的反應,因爲你的問題更多的是比統計方法的編碼。]

-1
SELECT Customer_ID, Var1, Var2,COLLECT(Marketing_Channel) AS Channels FROM table_name GROUP BY Customer_ID; 

我希望這會回答你的問題。

+1

SAS的SQL實現中沒有'collect()'函數。 –

+0

嘿,我以爲他需要SAS或SQL(SAS/SQL)的答案。我只知道SQL,所以在SQL中提到了答案。 @羅伯特彭裏奇 – Dinesh

2

爲此使用PROC TRANSPOSE。

proc transpose data=have out=want prefix=marketing_channel; 
    by customer_id var1 var2; 
    var marketing_channel; 
run;