# encording with Shift-JIS

### Rの使い方 ###

#
# A9.3.3 ワーキング・ディレクトリの設定
#

# ワーキング・ディレクトリの設定
# C:\EconDat\R_usage
setwd("C:/EconDat/R_usage")
getwd()

#
# A9.4.1 値
#

#　値の割当て
a <- 5

5 -> a

b <- -3

c <- a+b

# 文字列の割当て
name <- "taro"
name2 <-"二郎"


#
# A9.4.2 ベクトル
#

# ベクトルの作成
v_a <- c(1,2,3)
v_a
v_b <- c(4:6)
v_b
length(v_a)

#
# A9.4.3 データフレーム
#

# v_aとv_bをデータフレームにする
df_x <- data.frame(v_a, v_b)
df_x

#次のようにしても同じ操作を行うことが出来る。
df_x <- data.frame(v_a=c(1,2,3), v_b=c(4,5,6))
#列名の変更
colnames(df_x) <- c("a", "b")

#
# A9.5	分析用データフレームの作成 
#

# read the data file
# データの入力されたcsvファイルの読み込み
# 1. "C:\EconDat\data\student_survey2018\student_survey2018_data.csv"をコピーして、
# 現在のワーキングディレクトリに保存して実行する場合
# df_survey <- read.csv("student_survey2018_data.csv", header=TRUE)

# 2. "C:\EconDat\data\student_survey2018\student_survey2018_data.csv"を指定して、読み込む場合
df_survey <- read.csv("../data/student_survey2018/student_survey2018_data.csv", header=TRUE)

str(df_survey)
head(df_survey) 
tail(df_survey)


#
# A9.6.1 分析用変数の作成
#

# 1週間のアルバイト時間 part time job hour
df_survey$part_job_hour <- df_survey$Q40
summary(df_survey$part_job_hour)

# アルバイト時給 wages per hour
df_survey$h_wage <- df_survey$Q45 
summary(df_survey$h_wage)

# 平成29年度最低賃金時給737円未満を欠損値 treat h_wage under 737 yen as missing case
df_survey$h_wage[df_survey$h_wage<737] <-NA

# 時給2000円以上の賃金を欠損値 treat h_wage above 2000 yen as missing case
df_survey$h_wage[df_survey$h_wage>2000] <-NA

summary(df_survey$h_wage)


# 勉強時間 study hour
df_survey$study_hour <- df_survey$Q38
summary(df_survey$study_hour)

# 部活・サークル活動時間 activity hour
df_survey$activity_hour <- df_survey$Q39
summary(df_survey$activity_hour)


#
# ダミー変数
#

# 男性ダミー変数 male dummy
df_survey$male[df_survey$Q2=="男性"]<-1
df_survey$male[df_survey$Q2=="女性"]<-0
summary(df_survey$male)

# 女性ダミー変数 female dummy
df_survey[ which(df_survey$Q2=="女性"), "female" ] <- 1
df_survey[ which(df_survey$Q2=="男性"), "female" ] <- 0
summary(df_survey$female)


# 留学生ダミー変数 international student dummy
df_survey$international_st[df_survey$Q6=="留学生である。"]<-1
df_survey$international_st[df_survey$Q6=="留学生ではない。"]<-0

# アルバイトダミー変数 Part time job dummy
df_survey$part_job_d[df_survey$Q42=="している"]<-1
df_survey$part_job_d[df_survey$Q42=="していない"]<-0

#
# A9.6.2 記述統計
#

# データフレーム全体の記述統計
# descriptive statistics of dataframe
summary(df_survey)

# データフレームの中の一つの変数の記述統計
#最寄り駅までの徒歩分数
summary(df_survey$Q25)

# 平均
# mean/average
mean(df_survey$Q25)
# 欠損値を除いた場合
mean(df_survey$Q25, na.rm=TRUE)


# 標準偏差
# standard deviation
sd(df_survey$Q25)
# 欠損値を除いた場合
sd(df_survey$Q25, na.rm=TRUE)

# 男女別に通学時間の平均を求めたい場合
tapply(df_survey$Q25, df_survey$Q2, mean, na.rm=TRUE)

# 男女別に通学時間の標準偏差を求めたい場合
tapply(df_survey$Q25, df_survey$Q2, sd, na.rm=TRUE)


#
# A9.6.3 度数分布表・グラフの作成
#

# 度数分布表 Frequency table

## 居住都道府県 Prefectures where students live
table(df_survey$Q24)

barplot(table(df_survey$Q24))


# 因子変数の並べ替え
df_survey$pref_id <- factor(df_survey$Q24, levels = c("茨城県","群馬県","栃木県", "千葉県", "埼玉県","東京都", "神奈川県", "静岡県","その他"))
table(df_survey$pref_id)

# 棒グラフの作成
barplot(table(df_survey$pref_id))


## 通学時間 commute time

# 因子変数の並べ替え
df_survey$commute_time <- factor(df_survey$Q27, levels = c("30分未満","30分以上1時間未満","1時間以上1時間30分未満"," 1時間30分以上2時間未満","2時間以上3時間未満", "3時間以上"))
table(df_survey$commute_time)

barplot(table(df_survey$commute_time))

## アルバイト時給の並べ替え
wage_order <- cut(df_survey$Q45, breaks=c(400,600,800,1000, 1200,1400, 1600, 1800, 2000), right= FALSE, include.lowest = TRUE)
# ここでright=FALSEは、各階級の右側を開区間とするため。
# include.lowest = TRUE は、最上階の階級に関しては、分布の右側を含むようにするため。


# 度数分布表
table(wage_order)

# 棒グラフ
barplot(table(wage_order))

## アルバイト時給のヒストグラム
# 縦軸が度数の場合
hist(df_survey$Q45)
# 縦軸が密度の場合
hist(df_survey$Q45, freq=FALSE)

#
# A9.6.4 クロス集計表
#

## 性別とアルバイトの有無
#クロス集計表 (人数)
sex_partjob_ctab <-table(df_survey$Q2,df_survey$Q42)
sex_partjob_ctab
sex_partjob_ctab_m <-addmargins(sex_partjob_ctab)
sex_partjob_ctab_m

#クロス集計表 (比率)
sex_partjob_ctab_p <- prop.table(sex_partjob_ctab)
sex_partjob_ctab_p
sex_partjob_ctab_pm <- addmargins(sex_partjob_ctab_p)
sex_partjob_ctab_pm

##  カテゴリカルなダミー変数の場合

# 性別と通学時間
sex_commutetime_ctab <-table(df_survey$Q2,df_survey$commute_time)
sex_commutetime_ctab_m <-addmargins(sex_commutetime_ctab)
sex_commutetime_ctab_m

## 離散型変数と連続型変数の場合

# 性別とアルバイト賃金
sex_wage_ctab <- table(df_survey$Q2, wage_order)
sex_wage_ctab_m <-addmargins(sex_wage_ctab)
sex_wage_ctab_m

#
# A9.6.5 箱ひげ図
#

# アルバイト時間
boxplot(df_survey$part_job_hour,xlab="アルバイト時間", ylab="1週間当たり時間")

#男女別アルバイト時間
boxplot(df_survey$part_job_hour~df_survey$Q2,xlab="アルバイト時間", ylab="1週間当たり時間")


#
# A9.7.1 散布図
#

plot(df_survey$h_wage, df_survey$part_job_hour, xlab="時給(円)",ylab="アルバイト時間", pch=19)
# pchはプロットのシンボルを示します。詳しくは「R pch」で検索

#男女の塗り分け: 男性male==1ならblue, そうでない場合にはred
sex_col <- ifelse(df_survey$male==1,"blue","red")
plot(df_survey$h_wage, df_survey$part_job_hour, xlab="時給(円)",ylab="アルバイト時間", col=sex_col, pch=19)

#
# A9.7.2 相関係数
#

#　相関係数を求めるための変数を組み合わせたデータの作成
df_1 <- data.frame(part_job_hour=df_survey$part_job_hour, study_hour=df_survey$study_hour,
                   activity_hour=df_survey$activity_hour, h_wage=df_survey$h_wage, 
                   male=df_survey$male, international_st=df_survey$international_st)

# 相関係数
cor(df_1, use="p")
# use ="p" は、欠損値の扱いの指定。pは"pairwise.complete.obs"の略。
# ２つの変数同士で欠損値のない観測値を用いて相関係数を計算することを意味

# 多変量相関図プロット
pairs(df_1)

#
# A9.8 パケージのダウンロード
# 

# wbstatsパッケージの読み込み

# World bank indicatorにアクセスするためのパッケージ

# Introduction to the wbstats R-package
# https://cran.r-project.org/web/packages/wbstats/vignettes/Using_the_wbstats_package.html


# install.packages("wbstats") #一度実行すればよい

#パッケージの読み込み
library(wbstats)

#
# データのダウンロード
#

# データのIDは World bank indicatorsの中にある、変数を選択後、detailsを見て、調べることができる。

#NY.GDP.PCAP.KD : GDP per capita (constant 2010 US$)
GDPPC_2018_dat <- wb(indicator = "NY.GDP.PCAP.KD",country = "all",freq="Y", startdate=2018, enddate=2018)

