2017-06-03 151 views
0

我有一個數據集要求我在第一次找到註冊的在線購物者時購買了某件商品,併爲該購買申請了5%的折扣。查找變量的第一個實例

該數據集有28列,但爲了這個問題的目的,我將它濃縮到只有我認爲是相關的。

我需要創建一個新列,告訴我第一次有人購買東西。我們可以假設在同一天進行的採購是相同的採購,但屬於不同的項目。

Obs  ID Trans_Date Order_Number Value  Status 
---------------------------------------------------------------- 
1874 866 30/07/2016 191   $4,217.90 Registered 
1875 866 30/07/2016 191   $4,217.90 Registered 
1876 866 31/07/2016 192   $2,422.75 Registered 
1877 866 31/07/2016 192   $2,422.75 Registered 
1878 .  31/07/2016 193   $4,162.66 Unregistered 
1879 .  31/07/2016 193   $4,162.66 Unregistered 
1880 344 31/07/2016 194   $4,405.51 Registered 
1881 344 31/07/2016 194   $4,405.51 Registered 
1882 .  31/07/2016 195   $2,114.76 Unregistered 
1883 .  31/07/2016 195   $2,114.76 Unregistered 
1884 250 31/07/2016 196   $3,310.72 Registered 
1885 250 31/07/2016 196   $3,310.72 Registered 
1886 .  31/07/2016 197   $4,633.48 Unregistered 
1887 .  31/07/2016 197   $4,633.48 Unregistered 
1888 .  31/07/2016 197   $4,633.48 Unregistered 
1889 .  31/07/2016 197   $4,633.48 Unregistered 
1890 .  31/07/2016 198   $6,224.43 Unregistered 
1891 .  31/07/2016 198   $6,224.43 Unregistered 
1892 .  31/07/2016 198   $6,224.43 Unregistered 
1893 .  31/07/2016 198   $6,224.43 Unregistered 
+0

你想**排名**你的記錄日期,時刻保持最佳排名(第一次約會)並加起來的購買價值。我不知道SAS。使用標準SQL,您只需使用「RANK OVER」。也許這給你一個方向尋找什麼。 –

+1

請澄清你的問題。我沒有看到關於折扣百分比的樣本數據。樣本數據的期望輸出是什麼?你試過了什麼代碼? DATA步驟工具的一些常規提示:PROC SORT; BY小組處理;保留。 – Quentin

+0

我假設身份證沒有期限,這意味着它會繼續?看看SAS的BY組。關於BY組如何工作的文檔有一整章。 – Reeza

回答

0

這裏是我的 '第一' 的數據集:

'obs' , 'id' , 'trans_date' , 'order_number' , 'value'  , 'status' 
1874 , 866 , 30/07/2016 , 191   , 4217.90 , Registered 
1875 , 866 , 30/07/2016 , 191   , 4217.90 , Registered 
1876 , 866 , 31/07/2016 , 192   , 2422.75 , Registered 
1877 , 866 , 31/07/2016 , 192   , 2422.75 , Registered 
1878 , 344 , 30/07/2016 , 193   , 4162.66 , Unregistered 
1879 , 344 , 30/07/2016 , 193   , 4162.66 , Unregistered 
1880 , 344 , 31/07/2016 , 194   , 4405.51 , Registered 
1881 , 344 , 31/07/2016 , 194   , 4405.51 , Registered 
1882 , 250 , 30/07/2016 , 195   , 2114.76 , Unregistered 
1883 , 250 , 30/07/2016 , 195   , 2114.76 , Unregistered 
1884 , 250 , 31/07/2016 , 196   , 3310.72 , Registered 
1885 , 250 , 31/07/2016 , 196   , 3310.72 , Registered 
1886 , 275 , 30/07/2016 , 197   , 4633.48 , Unregistered 
1887 , 275 , 30/07/2016 , 197   , 4633.48 , Unregistered 
1888 , 275 , 30/07/2016 , 197   , 4633.48 , Unregistered 
1889 , 275 , 30/07/2016 , 197   , 4633.48 , Unregistered 
1890 , 275 , 31/07/2016 , 198   , 6224.43 , Unregistered 
1891 , 275 , 31/07/2016 , 198   , 6224.43 , Unregistered 
1892 , 275 , 31/07/2016 , 198   , 6224.43 , Unregistered 
1893 , 275 , 31/07/2016 , 198   , 6224.43 , Unregistered 

和這裏的一些PROC SQL:

proc sql noprint; 
create table temp as 
select *,min(trans_date) format=date9. as first 
from first 
group by id 
order by order_number; 

create table final as 
select obs,id,trans_date,order_number,value,status, 
    case when first = trans_date then 'FIRST' 
     else 'NOT FIRST' 
    end as flag 
from temp; 
quit; 
相關問題