データハンドリングのよく使うコマンド集(自分用)
いつでも参照できるように一覧にしてみます。
適宜,修正・追加していきます。
2012/11/16 追加・修正
--------------------------------------
メモ:
v1など:変数をいれる部分
newvar:新しく作られる変数
--------------------------------------
//ログをとる(解析結果をlogファイルに出力)。ファイルは作業ディレクトリにできる。
//アイコン押すよりこちらの方が楽
//データセットを置き換え
use data1.dta, clear
//データセット上書き保存
//解析の間だけ一時的にプログラム実行(欠損ケースを一時的に抜かして解析したい等)
//欠損のあるケースを削除
//変数の名前を変える
//名前を変えて新しい変数を作る
//文字型になっている文字データを数値に変換する(文字はラベルとして残る)
/*たとえば,データに性別が「男, 女」で入っているのを「0, 1」に直したい時。*/
//文字型になっている数字データを数値型に変換
destring b2 b3, generate(b2n b3n)
//※数字データでも,一部が2~3とか入力されてて文字として読み込まれることがあるので
//ある得点基準によって選ばれた新たな変数を作成する
//欠損値を数字に変換
//値を変換して新たな変数作成
//値の変換(接頭語で)
//値の範囲の省略
//たくさんの質問項目の値を一気に変換して新たな変数作成
//文字型変数のたくさんの値から数値型の変数作成(診断名から診断変数作る時とか)
//合計得点(欠損は0として変数の合計点)
//連続変数をカテゴリ分けする(任意の値で)
//連続変数をカテゴリ分けする(分割数指定)
//ケース1から10までの選択された変数のデータを表示
//↑をExcelに出力したいとき(コピーして貼り付けだとうまくいかないので)
//グループごとの平均値を作成してデータセットに追加
//通し番号(id)を作成
適宜,修正・追加していきます。
2012/11/16 追加・修正
--------------------------------------
メモ:
v1など:変数をいれる部分
newvar:新しく作られる変数
--------------------------------------
//ログをとる(解析結果をlogファイルに出力)。ファイルは作業ディレクトリにできる。
//アイコン押すよりこちらの方が楽
log using test //ここではtestがlogファイルの名前
//この間にプログラム
log close
//この間にプログラム
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
//この間にプログラム
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)
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
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)
//たくさんの質問項目の値を一気に変換して新たな変数作成
//文字型変数のたくさんの値から数値型の変数作成(診断名から診断変数作る時とか)
gen dep=0
replace dep=1 if diag=="F320" | diag=="F321" | diag=="F322" | diag=="F323" | diag=="F328" | diag=="F329"
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
または
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() //施設ごとに通し番号を付与
sort group
by group: egen ingroupid=seq() //施設ごとに通し番号を付与