私は次のことを行うには、データ・ステップまたはSQLステートメントをしたいです。SAS - IDでグループ化すると、すべての値を1行の最小値に変換するにはどうすればよいですか?
この表考えてみましょう:、どのように私はdlenfol列内の最小値にdlenfolのすべての値を変換し、rlenfolの全ての値ですidで
(前)
id div dlenfol repurch rlenfol
1 0 145 1 25
2 0 114 0 114
2 0 114 0 114
3 0 189 1 53
3 0 189 0 189
3 1 149 0 189
4 1 14 0 182
4 0 182 1 46
4 0 182 0 182
グループ化rlenfol列の最小値に?
一方、私もその選択という変数を作成したい:
id div dlenfol repurch rlenfol choice
1 0 145 1 25 0
2 0 114 0 114 .
2 0 114 0 114 .
3 0 149 1 53 1
3 0 149 0 53 1
3 1 149 0 53 1
4 1 14 0 46 1
4 0 14 1 46 1
4 0 14 0 46 1
(後)私がしようとしてきたコードではありません。このよう
=1 if a certain id EVER had a div=1;
=0 if a certain id EVER had a repurch=1 (but never had a div=1);
=1 if a certain id EVER had a div=1 AND EVER had a repurch=1;
and =. if the certain id never had a div=1 nor repurch=1.
すなわち作業:
data comb2d;
set comb;
do;
set comb;
by id;
dmin = min(dlenfol, dmin);
rmin = min(rlenfol, rmin);
if dlenfol=dmin and rlenfol^=rmin then CHOICE=1;
else if dlenfol^=dmin and rlenfol=rmin then CHOICE=0;
else if dlenfol=dmin and rlenfol=rmin then CHOICE=1;
else CHOICE=.;
/* if DIV=1 and REPURCH=0 then CHOICE=1;
else if DIV=0 and REPURCH=1 then CHOICE=0;
else if DIV=1 and REPURCH=1 then CHOICE=1;
else CHOICE=.; */
end;
dlenfol = dmin;
rlenfol = rmin;
/* drop dmin;
drop rmin; */
run;
次のSQLコードは、最小値の問題を解決するようだが、それは私が本当に必要としないという2つの変数(dminのとRMIN)を作成します。
proc sql;
create table comb3 as
select *, min(dlenfol) as dmin, min(rlenfol) as rmin
from comb
group by comb.id;
quit;
こんにちはDCR。あなたの答えをありがとうが、dlenfolのエントリのほとんどの値が欠落しています。 dlenfolのすべての値をdlenfol列の最小値に変換する必要があることに注意してください。また、Choice変数の作成方法についてのアイデアはありますか?ご協力いただきありがとうございます。そのことについて申し訳ありません –
は、私たちは、私はいくつかのSQLコードを思い付い保持声明 – DCR
を追加する必要があるが、それは私が本当に必要としない2つの新しい変数(dminとし、RMIN)を作成します:PROCのSQLを、 選択*としてテーブルCOMB3を作成し、Dminのような分(dlenfol)、分(rlenfol)comb.gvkeyによって櫛 群からRMIN として。 終了します。 –