2016-12-13 4 views
0

こんにちはIDで変数ページとステップが同じであれば、IDでグループ化したい。idのデータを比較する

例: enter image description here

だからここにあなたがそのID 2(生白)および4(緑)を参照することができ、正確に同じページと手順があります。

例2 - ここにあなたも私は私のid_group変数をする方法を見ることができます:あなたはグループid_groupは11と12はactaullyページで同じである二つのグループに与えている見ることができるように enter image description here

ステップ変数。

質問はどうですか - ページとステップ変数のグループがID内で同じ場合、同じ「グループ」IDを動的に割り当てるにはどうすればよいですか?

これはSASでも可能ですか?それがSASでは不可能な場合。 Pythonができます。

+0

SASとは何ですか? – Shane

+0

これはプログラミング言語です:http://www.sas.com –

+0

あなたのデータを整理し、 'BY PAGE STEP'を使うようにしてください。 – Tom

答えて

1

SASでは、ダブルDOWループと呼ばれるものを使用することができます(詳細については、Googleを参照してください)。これは、ソース表を2回ループして、どのIDがPAGEとSTEPの同じ値を持つかを判別し、GROUP_IDフラグを設定します。 2回目は、そのIDを持つすべてのレコードにGROUP_IDを割り当てます。

data have; 
input page step id; 
datalines; 
1 1 1 
1 2 1 
2 3 1 
3 4 1 
1 1 2 
2 2 2 
3 3 2 
5 1 3 
6 2 3 
1 1 4 
2 2 4 
3 3 4 
; 
run; 

data want; 
do until(last.id); 
set have; 
by id; 
if first.id then do; /* reset counts when id changes */ 
    _count=0; 
    _same=0; 
    end; 
_count+1; /* count number of records per id*/ 
_same+(page=step); /* count number of times page = step */ 
if last.id and _count=_same then do; 
    _flag+1; /* if count = same then increment _flag by 1 */ 
    group_id=_flag; 
    end; 
drop _: ; /* drop temporary variables */ 
end; 
do until(last.id); 
set have; 
by id; 
output; 
end; 
run; 
+0

ありがとう! あなたは私をかなり遠くに助けました! 私が紛失している唯一の事は、他の "グループ"にgroup_id、 を与えて、新しい観測セットがあればID = 1のように見えて、同じグループに入るはずです。これはグループ2になる可能性があります。 今すぐグループ1に割り当てられますか? –

+0

あなたの質問から結果がどのように見えるかは全く分かりませんでした。有効な結果が得られるたびにGROUP_IDを1ずつインクリメントするようにコードを調整しました。 – Longfish

+0

ご迷惑をおかけして申し訳ありません。私は例2で質問を更新しました。 ここでは、ページとステップがあるパターンがあることがわかります。私はそれを同じグループに割り当てたい。 –