てをいれるたびにミスがみつかる。が、二次分析がまだマシなのは少なくとも原票に戻るという作業がないので、間違っているのはいつも自分という点だけは信頼できる(謎

ねむい。

///////////////////////////////////////////////////////////////////////
//////////* insheet *//////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
* 使うのは、jgss2000-2003, 2005, 2006, 2008, 2009lcs, 2010, 2012, ssm2005, jlps2007
* それぞれでやるとあとでめんどくさそうなので、いったん全部合体させてから整える
* 手順1 それぞれのデータをcsvに変換してファイル名をリネーム(ここまで手動)
* 手順2 insheet して、1)データid、2)調査の種類を識別する変数、3)調査年変数を付与して、dtaファイルで保存
insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2000_2003.csv, clear
gen survey = 0
gen rid = 0
recode survey 0 = 1
recode rid 0 = 1 if ryear==2000
recode rid 0 = 2 if ryear==2001
recode rid 0 = 3 if ryear==2002
recode rid 0 = 4 if ryear==2003
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2000_2003.dta, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2005.csv, clear
gen survey = 1
gen rid = 5
gen ryear = 2005
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2005.dta, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2006.csv, clear
gen survey = 1
gen rid = 6
gen ryear = 2006
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2006.dta, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2008.csv, clear
gen survey = 1
gen rid = 7
gen ryear = 2008
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2008.dta, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2009lcs.csv, clear
gen survey = 1
gen rid = 8
gen ryear = 2009
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2009lcs.dta, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2010.csv, clear
gen survey = 1
gen rid = 9
gen ryear = 2010
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2010, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2012.csv, clear
gen survey = 1
gen rid = 10
gen ryear = 2012
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2012, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/ssm2005.csv, clear
gen survey = 2
gen rid = 11
gen ryear = 2005
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/ssm2005, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2007y.csv, clear
gen survey = 3
gen rid = 12
gen ryear = 2007
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2007y, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2007m.csv, clear
gen survey = 3
gen rid = 13
gen ryear = 2007
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2007m, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2011ya.csv, clear
gen survey = 3
gen rid = 14
gen ryear = 2011
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2011ya, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2011ma.csv, clear
gen survey = 3
gen rid = 15
gen ryear = 2011
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2011ma, replace

/////////////////////////////////////////////////////////////////////
//////////* merge *//////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
/* jgss2000-2003がマスター */
clear
set maxvar 10000
use /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2000_2003.dta, clear
* エラーでるので destring
destring szffttl, replace
destring szffonly, replace
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2005.dta, force
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2006.dta, force
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2008.dta, force
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2009lcs.dta, force
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2010.dta, force
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2012.dta, force
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/ssm2005.dta, force
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2007y.dta, force
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2007m.dta, force
destring dq43, replace
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2011ya.dta, force
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2011ma.dta, force

/* label */
label define survey 1 jgss 2 ssm 3 jlps
label values survey survey
tab survey

label define rid 1 jgss2000 2 jgss2001 3 jgss2002 4 jgss2003 5 jgss2005 6 jgss2006 ///
7 jgss2008 8 jgss2009lcs 9 jgss2010 10 jgss2012 11 ssm2005 12 jlps2007y 13 jlps2007m 14 jlps2011ya 15 jlps2011ma
label values rid rid
tab rid

//////////* drop *//////////
* jgss2003にはきょうだい数がないのでドロップ\(^o^)/
drop if ryear==2003
* jgss2012には出身都道府県がないのでドロップ\(^o^)/
drop if ryear==2012

/* 合体させただけのrawデータでまずは保存しとく */
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/merge_raw.dta, replace

/////////////////////////////////////////////////////////////////////////////
//////////* run *////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
use /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/merge_raw.dta, clear
* sample size 38368

//////////////////////////////////////////////////////////////////////////
//////////* sample set *//////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
* この分析の対象: 20-39歳 & 未婚者 & 学生ではない & 両親のどちらかが健在

//////////* age *///////////////////////////////////////////////////////////
* jgss: ageb, ssm: q01_2a, jlps: 2007-ybirth
gen age = 0
replace age = ageb if survey==1
replace age = q01_2a if survey==2

* jlpsには、年齢変数がない。wave1(1966-1986 20-40歳)、追加サンプル(1966-1986 24-44歳)
* wave1 サンプリング2007年12月 実査2007年1-3月、追加サンプル サンプリング2010年12月 実査2011年1-3月
* 可能な限り40歳以下が多めになるように計算 floorで小数点以下切り捨て
gen jlps2007age = ((2007*12+3)-(ybirth*12+mbirth))/12 if ryear==2007
gen jlps2007agefloor = floor(jlps2007age)
gen jlps2011age = ((2011*12+3)-(ybirth*12+mbirth))/12 if ryear==2011
gen jlps2011agefloor = floor(jlps2011age)
tab jlps2007agefloor
tab jlps2011agefloor
replace age = jlps2007agefloor if ryear==2007
replace age = jlps2011agefloor if ryear==2011
tab age

keep if age < 40
tab age
tab age rid
* 15432 ズサーc⌒っ゚Д゚)っ

gen agegroup=0
recode agegroup 0=1 if age>=20 & age<=24
recode agegroup 0=2 if age>=25 & age<=29
recode agegroup 0=3 if age>=30 & age<=34
recode agegroup 0=4 if age>=35 & age<=39
tab agegroup

label define agegroup 1 age20_24 2 age25_29 3 age30_34 4 age35_39
label values agegroup agegroup

//////////* marital status *///////////////////////////////////////////////////
/* jgss */
* 2000-2003, 2005, 2006以降(5,6追加)で値ラベルが違う
* jgss の婚姻上の地位の欠損がまったくない、んー? 全年齢データのdomarryは2人無回答ダケド
* jgss2000-2003
gen marital_status=0
recode marital_status 0=1 if marc==1 & (ryear==2000 | ryear==2001 | ryear==2002 | ryear==2003)
recode marital_status 0=2 if marc==2 & (ryear==2000 | ryear==2001 | ryear==2002 | ryear==2003)
recode marital_status 0=3 if marc==3 & (ryear==2000 | ryear==2001 | ryear==2002 | ryear==2003)

* jgss20005-2012
* 5「離婚を前提に別居中」=1、6「同棲」=3(日本の同棲はこの分析では有配偶とはみなさない)
recode marital_status 0=1 if marc==1 & (ryear==2005 | ryear==2006 | ryear==2008 | ryear==2009 | ryear==2010 | ryear==2012)
recode marital_status 0=2 if marc==2 & (ryear==2005 | ryear==2006 | ryear==2008 | ryear==2009 | ryear==2010 | ryear==2012)
recode marital_status 0=2 if marc==3 & (ryear==2005 | ryear==2006 | ryear==2008 | ryear==2009 | ryear==2010 | ryear==2012)
recode marital_status 0=3 if marc==4 & (ryear==2005 | ryear==2006 | ryear==2008 | ryear==2009 | ryear==2010 | ryear==2012)
recode marital_status 0=1 if marc==5 & (ryear==2005 | ryear==2006 | ryear==2008 | ryear==2009 | ryear==2010 | ryear==2012)
recode marital_status 0=3 if marc==6 & (ryear==2005 | ryear==2006 | ryear==2008 | ryear==2009 | ryear==2010 | ryear==2012)

/* ssm2005 */
* q24_1 1 未婚 2 結婚 3 離別 4 死別 9 dkna
recode marital_status 0=1 if q24_1==2
recode marital_status 0=2 if q24_1==3
recode marital_status 0=2 if q24_1==4
recode marital_status 0=3 if q24_1==1

/* jlps */
* 2007 zq50 1 未婚 2 既婚有配偶 3 死別 4 離別
recode marital_status 0=1 if zq50==2
recode marital_status 0=2 if zq50==3
recode marital_status 0=2 if zq50==4
recode marital_status 0=3 if zq50==1

* 2011 dq43 1 既婚 2 未婚 3 死別 4 離別 *途中でかえんなや!!!!!!!!!!
destring dq43, replace
recode marital_status 0=1 if dq43==1 & ryear==2011
recode marital_status 0=2 if dq43==3 & ryear==2011
recode marital_status 0=2 if dq43==4 & ryear==2011
recode marital_status 0=3 if dq43==2 & ryear==2011

/* label */
label define marital_status 1 married 2 divorced_or_widowed 3 never_married
label values marital_status marital_status
tab marital_status

tab survey marital_status, row m
* 欠損drop
drop if marital_status==0
* 6822人

* drop if marital_status!=3

//////////////////////////////
/////////* outcome *//////////
//////////////////////////////
///////////* jgss *//////////
* 2000-2001,2002-2003,2005以降で大きくレイアウトが異なる
/* 2000−2001 */
* szffhereは2000-2001にしか存在しない変数
*「あなたがご一緒に住んでいるご家族の方は、あなたを含めて何人ですか」
* なんか知らんけどtypemismach error
destring szffhere, replace
tab szffhere rid, m
* 同居人数無回答をドロップ 2000年に3人いる
drop if szffhere==999
* 2000-20001: 同居人数が1人だと単身者(親と別居と操作)、それ以外は親と同居(しゃーない
generate outcome = .
* 1=同居 0=別居
recode outcome .=1 if szffhere>1 & (ryear==2000 | ryear==2001)
recode outcome .=0 if szffhere==1 & (ryear==2000 | ryear==2001)

/* 2002 */
* ffresideは2002-2003にしか存在しない変数
* 「あなたはご家族と一緒にお住まいですか」
* 1家族と一緒に生活 2家族から一時的に離れて生活 3本人のみ(一人暮らし) 4その他(友人などと同居)
* この変数には無回答はいない(なんでかしら) →9が無回答 すでに落ちている
tab ffreside rid, m
* なんか知らんけど文字データになってるので変換する必要
destring ffreside, replace
* 1=親と同居 2-4=親と別居(しゃーない
recode outcome .=1 if ffreside==1 & ryear==2002
recode outcome .=0 if ffreside>=2 & ryear==2002

/* 2005- */
* 2005以降は両親と暮らしているかを直接きいている
* 父pplvtg 母mmlvtgあなたは、あなた自身のお父様、お母様と一緒に暮らしていますかそれぞれについてお答えください。
* 1同居 2別居 3死亡
* どっちも死亡と9無回答をドロップ
tab pplvtg mmlvtg
drop if pplvtg==9 | mmlvtg==9 | (pplvtg==3 & mmlvtg==3)
tab pplvtg mmlvtg, cell m
recode outcome .=1 if pplvtg==1 | mmlvtg==1
recode outcome .=0 if (pplvtg==2 & mmlvtg==2) | (pplvtg==2 & mmlvtg==3) | (pplvtg==3 & mmlvtg==2)
tab rid outcome, m

/* ssm2005 */
* 同居家族人数と同居している場合はその続柄を聞いている
* 手順 1死亡・無回答をドロップ→2同居続柄からoutcomeつくる
* 父母死亡をdrop 1健在 2死亡 9dkna
* 父 q20_1 母 q20_2
tab q20_1 q20_2
drop if q20_1==9 | q20_2==9 | (q20_1==2 & q20_2==2)
tab q20_1 q20_2
* 留置A票
* a20_2_09 父同居情報 1一緒にすんでる 2いない 9無回答
* a20_2_10 母同居情報 1一緒にすんでる 2いない 9無回答
tab a20_2_09 a20_2_10
destring a20_2_09, replace
destring a20_2_10, replace
drop if a20_2_09==9 | a20_2_10==9
* 留置B票
* b07_2_09 父同居情報 1一緒にすんでる 2いない 9無回答
* b07_2_10 母同居情報 1一緒にすんでる 2いない 9無回答
tab b07_2_09 b07_2_10
destring b07_2_09, replace
destring b07_2_10, replace
drop if b07_2_09==9 | b07_2_10==9
recode outcome .=1 if a20_2_09==1 | a20_2_10==1
recode outcome .=1 if b07_2_09==1 | b07_2_10==1
recode outcome .=0 if (a20_2_09==2 & a20_2_10==2) | (a20_2_09==2 & q20_2==2) | (q20_1==2 & a20_2_10==2)
recode outcome .=0 if (b07_2_09==2 & b07_2_10==2) | (b07_2_09==2 & q20_2==2) | (q20_1==2 & b07_2_10==2)
tab rid outcome, m

/* jlps2007 */
* 追加調査は別変数なので注意すること
* 2007 同居家族人数と同居している場合はその続柄を聞いている
* 手順 1死亡・無回答をドロップ→2同居続柄からoutcomeつくる
* 父母死亡をdrop 父母状況変数 1健在の年齢を回答 2亡くなっている 3わからない 9dkna
* 父 zq14fa 母 zq14ma
tab zq14fa zq14ma
drop if zq14fa==2 & zq14ma==2
tab zq14fa zq13_2h
* 追加調査も処理しようとしたけど、追加調査には父母の生死の情報がない\(^o^)/(しゃーない
* 同居続柄変数 父 zq13_2h 母 zq13_2i、1選択 2非選択
tab zq13_2h zq13_2i
* 同居変数に無回答傾向の人をドロップ
drop if zq13_2h==9 | zq13_2i==9
tab zq13_2h zq13_2i
recode outcome .=1 if zq13_2h==1 | zq13_2i==1
* 同居続柄変数 2011 追加調査からは世帯票形式になっている、くっそめんどい\(^o^)/
* 凡例 世帯員2人目が父親かどうか dq10_22z==7 母親 dq10_22z==8、3人目 dq10_23z==7
tab dq10_22z if ryear==2011, m
tab dq10_23z if ryear==2011, m
tab dq10_24z if ryear==2011, m
tab dq10_25z if ryear==2011, m
tab dq10_26z if ryear==2011, m
tab dq10_27z if ryear==2011, m
tab dq10_28z if ryear==2011, m
tab dq10_29z if ryear==2011, m
tab dq10_210z if ryear==2011, m
* 7人目まで処理すればよい
* これうまいこと短く書きたかったけどコマンドがわからない、たぶんアンダーバー以下をワイルドカード
recode outcome .=1 if (dq10_22z==7 & ryear==2011) | (dq10_23z==7 & ryear==2011) | (dq10_24z==7 & ryear==2011) | (dq10_25z==7 & ryear==2011) | (dq10_26z==7 & ryear==2011) | (dq10_27z==7 & ryear==2011) ///
| (dq10_22z==8 & ryear==2011) | (dq10_23z==8 & ryear==2011) | (dq10_24z==8 & ryear==2011) | (dq10_25z==8 & ryear==2011) | (dq10_26z==8 & ryear==2011) | (dq10_27z==8 & ryear==2011)
tab outcome, m
recode outcome .=0 if (zq13_2h==2 & zq13_2i==2) | (zq13_2h==2 & zq14ma==2) | (zq14fa==2 & zq13_2i==2)
recode

/* marital & living arrangement status */
gen status = marital_status
recode status 3 = .
recode status . = 3 if marital_status==3 & outcome==1
recode status . = 4 if marital_status==3 & outcome==0

/* label */
label define outcome 1 corresidence 0 leaving_home
label values outcome outcome
label define status 1 married 2 divorcedandwidowed 3 corresidence 4 leaving_home
label values status status
tab status, m