日誌

2012年2月の記事一覧

データハンドリングのよく使うコマンド集(自分用)

いつでも参照できるように一覧にしてみます。
適宜,修正・追加していきます。

2012/11/16 追加・修正
--------------------------------------
メモ:
v1など:変数をいれる部分
newvar:新しく作られる変数
--------------------------------------


//ログをとる(解析結果をlogファイルに出力)。ファイルは作業ディレクトリにできる。
  //アイコン押すよりこちらの方が楽

log using test //ここではtestがlogファイルの名前
//この間にプログラム
log close

//データセットを置き換え

use data1.dta, clear

//データセット上書き保存

save data2.dta, replace

//解析の間だけ一時的にプログラム実行(欠損ケースを一時的に抜かして解析したい等)

preserve
//この間にプログラム
restore

//(例:ロジスティック回帰を男女別に)
//男性(sex:0=男性,1=女性,の場合)
preserve
drop if sex==1
logistic incident2 ib(last).agec4
restore

//女性
preserve
drop if sex==0
logistic incident2 ib(last).agec4
restore

//欠損のあるケースを削除

drop if sex==. | age==.

//変数の名前を変える

rename age age2

//名前を変えて新しい変数を作る

gen age2=age

//文字型になっている文字データを数値に変換する(文字はラベルとして残る)
/*たとえば,データに性別が「男, 女」で入っているのを「0, 1」に直したい時。*/

encode sex, gen(sex2)
list sex2 //確認
list sex2, nolabel //確認

/*まとめてやりたい時*/
for varlist v1-v3: encode X, gen (Xr)

//文字型になっている数字データを数値型に変換

destring b2 b3, generate(b2n b3n)
//※数字データでも,一部が2~3とか入力されてて文字として読み込まれることがあるので

//ある得点基準によって選ばれた新たな変数を作成する

gen newvar=0
replace newvar=1 if v1>=10 | v2>=11 | v3==12

gen newvar=0 if v1>=2 & v1<=5
replace newvar=1 if v3==1

//欠損値を数字に変換

recode v1 v2 v3 (.=99)

//値を変換して新たな変数作成

recode v1 v2 v3 (1=0) (2=1), gen(v1r v2r v3r)

//値の変換(接頭語で)

recode v1-v3 (1=0) (2=0) (3=1) (4=1), prefix(dicho_)

//値の範囲の省略

recode v1 (1/2=1) (3/4=2) (5/10=3), gen(v1r)

//たくさんの質問項目の値を一気に変換して新たな変数作成

for varlist v1-v3 : recode X (1=0) (2=0) (3=1) (4=1), gen (Xr)

参照:たくさんの変数に同じ処理を繰り返したいとき

//文字型変数のたくさんの値から数値型の変数作成(診断名から診断変数作る時とか)

gen dep=0
 replace dep=1 if diag=="F320"  | diag=="F321"  | diag=="F322"  | diag=="F323" | diag=="F328" | diag=="F329"

//合計得点(欠損は0として変数の合計点)

egen newvar=rowtotal(v1-v3)

//連続変数をカテゴリ分けする(任意の値で)

egen agec=cut(age), at(0,10, 30, 40, 50, 60, 99)
または
gen agec=1 if age~=.
replace agec=2 if age>=30 & age<=39
replace agec=3 if age>=40 & age<=49
replace agec=4 if age>=50 & age<=59

//連続変数をカテゴリ分けする(分割数指定)

egen newvar=cut(v1), group(3)

//ケース1から10までの選択された変数のデータを表示

list id sex age in 1/10

//↑をExcelに出力したいとき(コピーして貼り付けだとうまくいかないので)

export excel id sex age using "test", firstrow(variables) replace in 1/10 //testがファイル名

//グループごとの平均値を作成してデータセットに追加

egen newvar=mean(v1), by(group)

//通し番号(id)を作成

egen id=seq()

sort group
by group: egen ingroupid=seq() //施設ごとに通し番号を付与
0