2017-08-22 5 views
0

私はこの問題について助けを求めています。最初の連絡から連続した月数

私は顧客のリストを持っています。顧客ごとに、私はこの顧客が私たちに連絡した月のリストを持っています。私は特定の顧客が私達に連絡した月数を知る必要があります。しかし、私は彼の最初の連絡から連続した数ヶ月だけ知る必要があるという問題があります。

だから私はこの

+---------+-------+ 
| cust id | month | 
+---------+-------+ 
|  1 | 2  | 
|  1 | 3  | 
|  1 | 4  | 
|  1 | 5  | 
|  1 | 8  | 
|  1 | 9  | 
|  1 | 10 | 
|  1 | 11 | 
|  1 | 12 | 
+---------+-------+ 

のようなテーブルがあると私は、だから、最終的に私は唯一の列FLG内のすべての1を合計し、この

+---------+-------+-------+ 
| cust id | month | flg | 
+---------+-------+-------+ 
|  1 | 2  | 1  | 
|  1 | 3  | 1  | 
|  1 | 4  | 1  | 
|  1 | 5  | 1  | 
|  1 | 8  | 0  | 
|  1 | 9  | 0  | 
|  1 | 10 | 0  | 
|  1 | 11 | 0  | 
|  1 | 12 | 0  | 
+---------+-------+-------+ 

のように列を追加する必要があります。結果は、消費者1が最初の接触から4回連続して私達に連絡したことになります。

は、私はこのような使用の何かを試してみましたが、それは動作しません:(私は1だけ拳の連続ラインのためになることを行う方法を知りません。

data test1; 
set customer_base;  
retain month_ret; 
output; 
by cust_id month; 
month_ret = month; 
run; 

Data test2; 
Set test1; 
By cust_id; 
If first.cust_id then i=1; 
if month= month_ret+1 then i=1; 
if month<>month_ret+1 then output; 
Run; 

はどうもありがとうございまし

答えて

1

あなたのコード内の2つの問題があります。

1)if month= month_ret+1 then i=1;

これが真実であることたびに、あなたはしかし、1にフラグを設定し、あなたは、Th1やるだけ必要があります現在の顧客にとってこれは間違いではありませんでした。

2)if month<>month_ret+1 then output;

あなたは<>オペレータが誤ってMAXと解釈されるログSASで見ることができるように。したがって、この条件は決して真ではありません。さらに、ここに明示的にoutputがあるので、この条件が正しくif month ne month_ret+1 then output;と書かれた場合、結果テーブルはにのみ、この条件に該当するレコードが含まれます。

あなたがそうのように、1つのステップで行うことができます達成しようとしているもの:

data have; 
    infile datalines; 
    input cust_id month; 
    datalines; 
    1 2 
    1 3 
    1 4 
    1 5 
    1 8 
    1 9 
    1 10 
    1 11 
    1 12 
    ; 
    run; 

    data want (drop=p_month); 
    set have; 
    by cust_id; 
    retain flg p_month; 
    if first.cust_id then flg=1; 
    else if month ne p_month+1 then flg=0; 
    p_month=month; 
    run; 

をあなたは1にフラグを設定し、各顧客の最初の月は、1前回のプラスに等しいではありませんその後いつでも、フラグを0に設定します。

+0

悪いです。どうもありがとうございました! – Vendula

+0

@Vendulaご参考までに – user2877959

+0

user2877959、P _ month変数がサンプルコードでどのように機能するのか説明できますか? – Alph

関連する問題