2016-11-18 4 views
0

私が使用しているファイルには、肥満、正常な体重、および体重減少の3つのメンターに分類される3つの参加者グループが含まれています。ありがたいことに、彼らのID番号は、肥満の場合は500と800、NWの場合は600、SWLMの場合は700です。SASの参加者をグループ化する

data dummy_2; 
set dummy; 
if ptID = 'group' then group=1; 
if ptID = 102-545 or ID= 800-810 then group =0; 
if ptID = 600-632 then group=1; 
if ptID = 700-721 then group=2; 
if ptID = 99999 or 99998 then group=.; 
run; 

コード自体erroringされていません。

これは私が使用していたコードです。

注:データセットWORK.DUMMY_2から読み取られた観測値は103です。 注:PROCEDUREの使用PRINT(合計処理時間): リアルタイム0.01秒 CPU時間0.01秒

が、私は、新しいグループの変数のための迅速な印刷を行うときに、それが結果]タブに表示のデータが私に与えていますすべて除くBMIデータの単一の列れる(。)

ファイルには他のグループの変数がありません(私は私が保存されているExcelのバージョンを検索してください)

私はその名前を考えるの条件に変数名を変更グループがコマンドに似ている可能性があります。 インラインイメージ1

ここでは、列の先頭にグループの代わりに条件が表示されますが、なぜこれらのグラフが表示されるのかはわかりません。

data dummy_2; 
set dummy; 
if ptID = 'condition' then condition=0; 
if ptID = 102-545 or ptID= 800-810 then condition =0; 
if ptID = 600-632 then condition=1; 
if ptID = 700-721 then condition=2; 
if ptID = 99999 or 99998 then condition=.; 
run; 

proc print; 
var condition; 
run; 

ありがとうございます!

+0

おそらく 'FORMAT condition 1.;'を追加しようとします。あなたのptID変数も数値ですか? 'PROC CONTENTS DATA = dummy;'を使ってチェックすることができます。 – heyydrien

答えて

2
if ptID = 600-632 then condition=1; 

あなたはどう思いますか?

私はあなたに手がかりを与えます。これはこれと同じです。

if ptID = -32 then condition=1; 

私はあなたが望んでいたものではないと推測します。 in演算子を使用する必要があります。

if ptID in (600:632) then condition=1; 

私はptIDが数値であると仮定しています。それがキャラクターなら、あなたはこれを本当にやることはできません。あなたは私たちに知らせてください。

私はグループのこの種を行うための最善の方法は、形式であることに注意します:形式で

proc format; 
    value condGroupF 
    102-545 = '0' 
    600-632 = '1' 
    700-721 = '2' 
    800-810 = '0' 
    99998-99999 = ' ' 
    other= ' ' 
    ; 
quit; 

そして

data dummy_2; 
    set dummy; 
    condition = put(ptID,CondGroupF.); 
run; 

注、「ダッシュ」スタイルは正しいです、それはそうではないというデータステップにあります。

+1

コロン( ':')はあまり使われていません。 –

関連する問題