kazutan
2016年5月28日
appId
はすでにmyappID
に格納してあることとしますlibrary(devtools)
# install_github("yutannihilation/estatapi")
library(estatapi)
StatsList <- estat_getStatsList(appId = myappId, searchWord = "社会生活基本調査")
str(StatsList)
## Classes 'tbl_df', 'tbl' and 'data.frame': 5265 obs. of 13 variables:
## $ @id : chr "0003005834" "0003005836" "0003005838" "0003070357" ...
## $ STAT_NAME : chr "社会生活基本調査" "社会生活基本調査" "社会生活基本調査" "社会生活基本調査" ...
## $ GOV_ORG : chr "総務省" "総務省" "総務省" "総務省" ...
## $ STATISTICS_NAME : chr "平成18年社会生活基本調査 調査票Bに基づく結果 生活時間に関する結果 生活時間編" "平成18年社会生活基本調査 調査票Bに基づく結果 生活時間に関する結果 生活時間編" "平成18年社会生活基本調査 調査票Bに基づく結果 生活時間に関する結果 生活時間編" "平成23年社会生活基本調査 調査票Bに基づく結果 生活時間に関する結果 生活時間編" ...
## $ TITLE : chr "男女,行動の種類(小分類,主行動),行動の種類(小分類,同時行動)別総平均時間(週全体)" "男女,行動の種類(小分類,主行動),行動の種類(小分類,同時行動)別行動者平均時間(週全体)" "男女,行動の種類(小分類,主行動),行動の種類(小分類,同時行動)別行動者率(週全体)" "男女,主行動の種類(小分類),同時行動の種類(小分類)別総平均時間-週全体" ...
## $ CYCLE : chr "-" "-" "-" "-" ...
## $ SURVEY_DATE : chr "200610" "200610" "200610" "201110" ...
## $ OPEN_DATE : chr "2007-12-21" "2007-12-21" "2007-12-21" "2012-12-21" ...
## $ SMALL_AREA : chr "0" "0" "0" "0" ...
## $ MAIN_CATEGORY : chr "教育・文化・スポーツ・生活" "教育・文化・スポーツ・生活" "教育・文化・スポーツ・生活" "教育・文化・スポーツ・生活" ...
## $ SUB_CATEGORY : chr "文化・スポーツ・生活" "文化・スポーツ・生活" "文化・スポーツ・生活" "文化・スポーツ・生活" ...
## $ OVERALL_TOTAL_NUMBER: chr "39675" "39675" "39675" "43200" ...
## $ UPDATED_DATE : chr "2009-03-09" "2009-03-09" "2009-03-09" "2013-01-07" ...
head(StatsList)
## Source: local data frame [6 x 13]
##
## @id STAT_NAME GOV_ORG
## <chr> <chr> <chr>
## 1 0003005834 社会生活基本調査 総務省
## 2 0003005836 社会生活基本調査 総務省
## 3 0003005838 社会生活基本調査 総務省
## 4 0003070357 社会生活基本調査 総務省
## 5 0003070359 社会生活基本調査 総務省
## 6 0003070361 社会生活基本調査 総務省
## STATISTICS_NAME
## <chr>
## 1 平成18年社会生活基本調査 調査票Bに基づく結果 生活時間に関する結果 生活時間編
## 2 平成18年社会生活基本調査 調査票Bに基づく結果 生活時間に関する結果 生活時間編
## 3 平成18年社会生活基本調査 調査票Bに基づく結果 生活時間に関する結果 生活時間編
## 4 平成23年社会生活基本調査 調査票Bに基づく結果 生活時間に関する結果 生活時間編
## 5 平成23年社会生活基本調査 調査票Bに基づく結果 生活時間に関する結果 生活時間編
## 6 平成23年社会生活基本調査 調査票Bに基づく結果 生活時間に関する結果 生活時間編
## Variables not shown: TITLE <chr>, CYCLE <chr>, SURVEY_DATE <chr>,
## OPEN_DATE <chr>, SMALL_AREA <chr>, MAIN_CATEGORY <chr>, SUB_CATEGORY
## <chr>, OVERALL_TOTAL_NUMBER <chr>, UPDATED_DATE <chr>.
library(dplyr)
library(stringr)
x <- StatsList %>%
filter(stringr::str_detect(.$STATISTICS_NAME, "平成23.*A.*時間帯")) %>%
filter(.$"@id"=="0003066844")
str(x)
## Classes 'tbl_df', 'tbl' and 'data.frame': 1 obs. of 13 variables:
## $ @id : chr "0003066844"
## $ STAT_NAME : chr "社会生活基本調査"
## $ GOV_ORG : chr "総務省"
## $ STATISTICS_NAME : chr "平成23年社会生活基本調査 調査票Aに基づく結果 生活時間に関する結果 時間帯編"
## $ TITLE : chr "曜日,男女,行動の種類,時間帯別行動者率-全国*,都道府県*,10大都市圏・10大都市圏以外,都市階級"
## $ CYCLE : chr "-"
## $ SURVEY_DATE : chr "201110"
## $ OPEN_DATE : chr "2012-09-26"
## $ SMALL_AREA : chr "0"
## $ MAIN_CATEGORY : chr "教育・文化・スポーツ・生活"
## $ SUB_CATEGORY : chr "文化・スポーツ・生活"
## $ OVERALL_TOTAL_NUMBER: chr "2963520"
## $ UPDATED_DATE : chr "2012-09-25"
head(x)
## Source: local data frame [1 x 13]
##
## @id STAT_NAME GOV_ORG
## <chr> <chr> <chr>
## 1 0003066844 社会生活基本調査 総務省
## STATISTICS_NAME
## <chr>
## 1 平成23年社会生活基本調査 調査票Aに基づく結果 生活時間に関する結果 時間帯編
## Variables not shown: TITLE <chr>, CYCLE <chr>, SURVEY_DATE <chr>,
## OPEN_DATE <chr>, SMALL_AREA <chr>, MAIN_CATEGORY <chr>, SUB_CATEGORY
## <chr>, OVERALL_TOTAL_NUMBER <chr>, UPDATED_DATE <chr>.
x
にターゲットの調査データを格納meta_info <- estat_getMetaInfo(appId = myappId, statsDataId = x$"@id")
names(meta_info)
## [1] "cat01" "cat02" "cat03" "cat04" "area" "time"
str(meta_info)
## List of 6
## $ cat01:Classes 'tbl_df', 'tbl' and 'data.frame': 21 obs. of 3 variables:
## ..$ @code : chr [1:21] "001" "002" "003" "004" ...
## ..$ @name : chr [1:21] "総数" "睡眠" "身の回りの用事" "食事" ...
## ..$ @level: chr [1:21] "1" "1" "1" "1" ...
## $ cat02:Classes 'tbl_df', 'tbl' and 'data.frame': 3 obs. of 4 variables:
## ..$ @code : chr [1:3] "001" "002" "003"
## ..$ @name : chr [1:3] "総数" "男" "女"
## ..$ @level : chr [1:3] "1" "2" "2"
## ..$ @parentCode: chr [1:3] NA "001" "001"
## $ cat03:Classes 'tbl_df', 'tbl' and 'data.frame': 98 obs. of 4 variables:
## ..$ @code : chr [1:98] "001" "099" "003" "004" ...
## ..$ @name : chr [1:98] "標本数" "10歳以上推定人口" "行動者率(0:00-0:15)" "行動者率(0:15-0:30)" ...
## ..$ @level: chr [1:98] "1" "1" "1" "1" ...
## ..$ @unit : chr [1:98] NA "千人" "%" "%" ...
## $ cat04:Classes 'tbl_df', 'tbl' and 'data.frame': 3 obs. of 3 variables:
## ..$ @code : chr [1:3] "00100" "00200" "00300"
## ..$ @name : chr [1:3] "平日" "土曜日" "日曜日"
## ..$ @level: chr [1:3] "1" "1" "1"
## $ area :Classes 'tbl_df', 'tbl' and 'data.frame': 160 obs. of 3 variables:
## ..$ @code : chr [1:160] "00000" "01000" "02000" "03000" ...
## ..$ @name : chr [1:160] "全国" "北海道" "青森県" "岩手県" ...
## ..$ @level: chr [1:160] "1" "2" "2" "2" ...
## $ time :Classes 'tbl_df', 'tbl' and 'data.frame': 1 obs. of 3 variables:
## ..$ @code : chr "2011000000"
## ..$ @name : chr "2011年"
## ..$ @level: chr "1"
head(meta_info)
## $cat01
## Source: local data frame [21 x 3]
##
## @code @name @level
## <chr> <chr> <chr>
## 1 001 総数 1
## 2 002 睡眠 1
## 3 003 身の回りの用事 1
## 4 004 食事 1
## 5 005 通勤・通学 1
## 6 006 仕事 1
## 7 007 学業 1
## 8 008 家事 1
## 9 009 介護・看護 1
## 10 010 育児 1
## .. ... ... ...
##
## $cat02
## Source: local data frame [3 x 4]
##
## @code @name @level @parentCode
## <chr> <chr> <chr> <chr>
## 1 001 総数 1 <NA>
## 2 002 男 2 001
## 3 003 女 2 001
##
## $cat03
## Source: local data frame [98 x 4]
##
## @code @name @level @unit
## <chr> <chr> <chr> <chr>
## 1 001 標本数 1 <NA>
## 2 099 10歳以上推定人口 1 千人
## 3 003 行動者率(0:00-0:15) 1 %
## 4 004 行動者率(0:15-0:30) 1 %
## 5 005 行動者率(0:30-0:45) 1 %
## 6 006 行動者率(0:45-1:00) 1 %
## 7 007 行動者率(1:00-1:15) 1 %
## 8 008 行動者率(1:15-1:30) 1 %
## 9 009 行動者率(1:30-1:45) 1 %
## 10 010 行動者率(1:45-2:00) 1 %
## .. ... ... ... ...
##
## $cat04
## Source: local data frame [3 x 3]
##
## @code @name @level
## <chr> <chr> <chr>
## 1 00100 平日 1
## 2 00200 土曜日 1
## 3 00300 日曜日 1
##
## $area
## Source: local data frame [160 x 3]
##
## @code @name @level
## <chr> <chr> <chr>
## 1 00000 全国 1
## 2 01000 北海道 2
## 3 02000 青森県 2
## 4 03000 岩手県 2
## 5 04000 宮城県 2
## 6 05000 秋田県 2
## 7 06000 山形県 2
## 8 07000 福島県 2
## 9 08000 茨城県 2
## 10 09000 栃木県 2
## .. ... ... ...
##
## $time
## Source: local data frame [1 x 3]
##
## @code @name @level
## <chr> <chr> <chr>
## 1 2011000000 2011年 1
meta_info$cat01$"@id"="002"
)で、全国(meta_info$area$"@id"="00000"
)なはずdf <- estat_getStatsData(
appId = myappId,
statsDataId = x$"@id",
cdCat01 = "002",
cdArea = "00000")
str(df)
## Classes 'tbl_df', 'tbl' and 'data.frame': 882 obs. of 15 variables:
## $ @cat01 : chr "002" "002" "002" "002" ...
## $ @cat02 : chr "001" "001" "001" "001" ...
## $ @cat03 : chr "001" "001" "001" "099" ...
## $ @cat04 : chr "00100" "00200" "00300" "00100" ...
## $ @area : chr "00000" "00000" "00000" "00000" ...
## $ @time : chr "2011000000" "2011000000" "2011000000" "2011000000" ...
## $ $ : chr "-" "-" "-" "-" ...
## $ @unit : chr NA NA NA "千人" ...
## $ value : num 0 0 0 0 0 ...
## $ cat01_info: chr "睡眠" "睡眠" "睡眠" "睡眠" ...
## $ cat02_info: chr "総数" "総数" "総数" "総数" ...
## $ cat03_info: chr "標本数" "標本数" "標本数" "10歳以上推定人口" ...
## $ cat04_info: chr "平日" "土曜日" "日曜日" "平日" ...
## $ area_info : chr "全国" "全国" "全国" "全国" ...
## $ time_info : chr "2011年" "2011年" "2011年" "2011年" ...
cdCat01
とかは、必要な項目を絞るために必要
startPosition=*
(*は数値)として続きを取得cat01
内で@name="睡眠"
だけがほしいなら、この“睡眠”の@code
が必要
meta_info$cat01 %>%
filter(.$"@name"=="睡眠")
## Source: local data frame [1 x 3]
##
## @code @name @level
## <chr> <chr> <chr>
## 1 002 睡眠 1
str(df)
## Classes 'tbl_df', 'tbl' and 'data.frame': 882 obs. of 15 variables:
## $ @cat01 : chr "002" "002" "002" "002" ...
## $ @cat02 : chr "001" "001" "001" "001" ...
## $ @cat03 : chr "001" "001" "001" "099" ...
## $ @cat04 : chr "00100" "00200" "00300" "00100" ...
## $ @area : chr "00000" "00000" "00000" "00000" ...
## $ @time : chr "2011000000" "2011000000" "2011000000" "2011000000" ...
## $ $ : chr "-" "-" "-" "-" ...
## $ @unit : chr NA NA NA "千人" ...
## $ value : num 0 0 0 0 0 ...
## $ cat01_info: chr "睡眠" "睡眠" "睡眠" "睡眠" ...
## $ cat02_info: chr "総数" "総数" "総数" "総数" ...
## $ cat03_info: chr "標本数" "標本数" "標本数" "10歳以上推定人口" ...
## $ cat04_info: chr "平日" "土曜日" "日曜日" "平日" ...
## $ area_info : chr "全国" "全国" "全国" "全国" ...
## $ time_info : chr "2011年" "2011年" "2011年" "2011年" ...
head(df,10)
## Source: local data frame [10 x 15]
##
## @cat01 @cat02 @cat03 @cat04 @area @time $ @unit value
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <dbl>
## 1 002 001 001 00100 00000 2011000000 - <NA> 0.00
## 2 002 001 001 00200 00000 2011000000 - <NA> 0.00
## 3 002 001 001 00300 00000 2011000000 - <NA> 0.00
## 4 002 001 099 00100 00000 2011000000 - 千人 0.00
## 5 002 001 099 00200 00000 2011000000 - 千人 0.00
## 6 002 001 099 00300 00000 2011000000 - 千人 0.00
## 7 002 001 003 00100 00000 2011000000 82.93 % 82.93
## 8 002 001 003 00200 00000 2011000000 82.12 % 82.12
## 9 002 001 003 00300 00000 2011000000 80.86 % 80.86
## 10 002 001 004 00100 00000 2011000000 83.61 % 83.61
## Variables not shown: cat01_info <chr>, cat02_info <chr>, cat03_info <chr>,
## cat04_info <chr>, area_info <chr>, time_info <chr>.
library(lubridate)
kosaki <- df %>%
filter(stringr::str_detect(.$cat03_info, "^行動者率")) %>% #データじゃない部分を削除
select(sex=cat02_info,time=cat03_info,weekday=cat04_info, value) %>% #変数選択
mutate(sex=as.factor(sex)) %>% #性別をfactorに変換
mutate(weekday=as.factor(weekday)) %>% #曜日をfactorに変換
mutate(time=stringr::str_extract(.$time,"\\d{1,2}:\\d{1,2}")) %>% #timeの最初の時刻だけ切り出す
mutate(time=parse_date_time2(.$time, "H:M")) #時間に変換
str(kosaki)
## Classes 'tbl_df', 'tbl' and 'data.frame': 864 obs. of 4 variables:
## $ sex : Factor w/ 3 levels "女","男","総数": 3 3 3 3 3 3 3 3 3 3 ...
## $ time : POSIXct, format: "-1-12-31 00:00:00" "-1-12-31 00:00:00" ...
## $ weekday: Factor w/ 3 levels "土曜日","平日",..: 2 1 3 2 1 3 2 1 3 2 ...
## $ value : num 82.9 82.1 80.9 83.6 82.7 ...
head(kosaki,10)
## Source: local data frame [10 x 4]
##
## sex time weekday value
## <fctr> <time> <fctr> <dbl>
## 1 総数 -1-12-31 00:00:00 平日 82.93
## 2 総数 -1-12-31 00:00:00 土曜日 82.12
## 3 総数 -1-12-31 00:00:00 日曜日 80.86
## 4 総数 -1-12-31 00:15:00 平日 83.61
## 5 総数 -1-12-31 00:15:00 土曜日 82.67
## 6 総数 -1-12-31 00:15:00 日曜日 81.50
## 7 総数 -1-12-31 00:30:00 平日 86.23
## 8 総数 -1-12-31 00:30:00 土曜日 84.83
## 9 総数 -1-12-31 00:30:00 日曜日 83.70
## 10 総数 -1-12-31 00:45:00 平日 86.90
time
がアレなのは時系列めんどくさかったからlibrary(ggplot2)
kosaki_weekday <- kosaki %>%
group_by(time,weekday) %>%
summarise(value=mean(value))
ggplot(kosaki_weekday, aes(x=time, y=value, color=weekday)) +
geom_line() +
labs(title="各時間帯における睡眠率(土・日・平日別)", y="睡眠率")
kosaki_fm <- kosaki %>%
group_by(time,sex) %>%
summarise(value=mean(value))
ggplot(kosaki_fm, aes(x=time, y=value, color=sex)) +
geom_line() +
labs(title="各時間帯における睡眠率(性別)", y="睡眠率")