こにしき(言葉・日本社会・教育)

関西学院大学(2016.04~)の寺沢拓敬のブログです(専門:言語社会学)。

ライフスタイルのコーディング用R関数

誰がこんな関数つかうんだよのコーナー!


職種、就業上の地位(無職/学生を含む)、企業規模、性別、既婚未婚を分岐条件にした、比較的複雑なコーディングを行うR関数。


たとえば以下の様なコーディング・ルール。

  職種 就業上の地位 企業規模 性別 配偶者の有無
経営管理 経営者役員 30人以上
自営・家族従業 経営者役員 29人以下
経営管理 管理 30人以上
正規ホワイト 専門 正規雇用
正規ホワイト 事務 正規雇用
正規ホワイト 販売 正規雇用
正規ブルー ブルー 正規雇用
自営・家族従業 自営業主
自営・家族従業 家族従業者
非正規 非正規 男性
非正規 非正規 女性 なし
無職 無職 男性
無職 無職 女性 なし
主婦(専業/兼業) 無職 女性 あり
主婦(専業/兼業) 非正規雇用 女性 あり
学生 学生
#個々のコーディングルールごとに ifelse()関数でベクトル作成
ky1 <- ifelse(empsta=="経営者・役員"&as.numeric(csize) >=2
        ,"経営・管理","")
ky2 <- ifelse(jobtype=="管理"&as.numeric(csize) >=2
              ,"経営・管理","")
sw <- ifelse(empsta=="フルタイム雇用者(常時雇用者)" & 
      (jobtype=="専門"|jobtype=="事務"|jobtype=="販売サービス")
       ,"正規ホワイト","")
sb <- ifelse(empsta=="フルタイム雇用者(常時雇用者)" & 
         (jobtype=="熟練"|jobtype=="半熟練"|jobtype=="非熟練"|jobtype=="農林")
             ,"正規ブルー","")
jk1 <- ifelse(empsta=="自営業主"|empsta=="家族従業者"
              ,"自営・家族従業","")
jk2 <- ifelse( (jobtype=="管理"|empsta=="経営者・役員")&csize=="1〜29人(自営・小企業)"
             ,"自営・家族従業","")
irm <- ifelse(empsta=="パート・アルバイト・臨時雇用者・嘱託" & sex=="男性"
          ,"非正規","")
irf <- ifelse(empsta=="パート・アルバイト・臨時雇用者・嘱託" & sex=="女性"&
                (marital=="離別・死別"|marital=="未婚")
              ,"非正規","")
unm <- ifelse(empsta=="無職" & sex=="男性"
              ,"無職","")
unf <- ifelse(empsta=="無職" & sex=="女性"&(marital=="離別・死別"|marital=="未婚")
              ,"無職","")
shf <- ifelse(  (empsta=="無職"|empsta=="パート・アルバイト・臨時雇用者・嘱託") &
                  sex=="女性" & marital=="配偶者がいる"
              ,"主婦","")
gks <- ifelse(empsta=="学生","学生","")

#上の各ベクターを統合
hoge <- cbind(ky1,ky2,sw,sb,jk1,jk2,irm,irf,unm,unf,shf,gks)
yyy <- NULL
for(i in 1:nrow(hoge)){
  yy <- replace(hoge[i,],which(is.na(hoge[i,])),"")
  yyy[i] <- paste(yy,collapse="")
}
# 多数の""が出てしまうがしょうがない
#イレギュラーなものを修正(例)
#実際の出力結果をみながら調整してください
yyy <- ifelse(yyy=="経営・管理経営・管理","経営・管理",yyy)
yyy <- ifelse(yyy=="経営・管理非正規","非正規",yyy)
yyy <- ifelse(yyy=="自営・家族従業自営・家族従業","自営・家族従業",yyy)
yyy <- ifelse(yyy=="",NA,yyy)

#代入
lifestyle <- yyy