Upgrade to Pro — share decks privately, control downloads, hide ads and more …

R言語入門 (R-4.2.3 2023年4月版) / introduction to r

R言語入門 (R-4.2.3 2023年4月版) / introduction to r

統計解析とグラフィックスのための言語・環境である「R言語」の概要、インストール方法、初歩的な使い方を広く・浅く解説した資料です。

2023年4月時点でのRの~~最新バージョン~~R-4.2.3を対象としています。

スライド中で実行するRスクリプトを置いているGitHubリポジトリ: https://github.com/uribo/cue2022aw_r104
ウェブブラウザ上でRを動かす環境: https://mybinder.org/v2/gh/uribo/cue2022aw_r104/main?urlpath=rstudio

Uryu Shinya

April 25, 2023
Tweet

More Decks by Uryu Shinya

Other Decks in Programming

Transcript

  1.  3ݴޠͷྺ࢙     34UVEJPͷϦϦʔε χϡʔδʔϥϯυͷΦʔΫϥϯυେֶʹۈΊΔ 3PCFSU(FOUMFNBOͱ3PTT*IBLB͕։ൃʹணख Φʔϓϯιʔειϑτ΢ΣΞͱͯ͠ެ։

     $3"/ͷ૑ઃ ୭Ͱ΋ࣗ༝ʹར༻Մೳ ։ൃʹ΋ࢀՃͰ͖Δ ύοέʔδͷ؅ཧͱ഑෍ 3ͷϦϦʔε ؔ਺ܕݴޠ4DIFNF ౷ܭॲཧݴޠ4 ͷӨڹΛड͚Δ   $3"/ʹొ࿥͞Εͨύοέʔδ਺   5PLZP3ൃ଍ɺ+BQBO3!౷ܭ਺ཧݚڀॴͷ։࠵ ࠃ಺Ͱͷ3ίϛϡχςΟ5TVLVCB3ൃ଍ ʮσʔλαΠΤϯςΟετʯϒʔϜ ࠃ಺ͷ஍ํ3ίϛϡχςΟͷॆ࣮ ࡳຈɺઋ୆ɺԣ඿ɺ໊ݹ԰ɺେࡕɺ޿ౡɺ෱ԬFUD 5PLVTIJNB3ͷ։࠵ ࣌఺
  2. 3ͷΠϯετʔϧʙNBD04ฤʙ  ೚ҙͷ΢Σϒϒϥ΢βʢ$ISPNFɺ4BGBSJɺ&EHFͳͲʣͰ$3"/ʢIUUQTDSBOSQSPKFDUPSHʣ΁ΞΫηε %PXOMPBE3GPSNBD04ΛΫϦοΫ 3BSNQLH͕Πϯετʔϧ͞ΕΔͷͰɺμ΢ϯϩʔυͨ͠ϑΝΠϧΛ։͘ ⁞   ⁠ ར༻͍ͯ͠Δ୺຤͕.νοϓ౥ࡌͰ͋Ε͹3BSNQLH *OUFMνοϓ౥ࡌͰ͋Ε͹3QLH

    ΛΫϦοΫͯ͠μ΢ϯϩʔυʢ͜͜Ͱ͸.൛Λ૝ఆʣ جຊతʹ͸Կ΋มߋͤͣʹʮ࣍΁ʯΛΫϦοΫ͍͚ͯͩ͘͠ 'JOEFS͔Βʜμ΢ϯϩʔυ 3BSNQLHΛΫϦοΫ ࢖༻ڐ୚ܖ໿ΛಡΈɺʮಉҙ͢ΔʯΛબ୒ Πϯετʔϧઌͷબ୒ʜ.BDJOUPTI)%z ඪ४Πϯετʔϧͷ··Πϯετʔϧ ⁡ ΞϓϦέʔγϣϯϑΥϧμʹ3BQQ͕͋Δ͜ͱΛ֬ೝ ⁢
  3.  ࡞ۀεϖʔεʢXPSLJOHEJSFDUPSZʣ 3Ͱͷ࡞ۀΛߦ͏ࡍͷجຊͱͳΔ؀ڥʢେہత؀ڥʣ ϑΝΠϧͷೖग़ྗ΍ΦϒδΣΫτ؅ཧͷத৺ͱͳΔ৔ॴ $VTFS໊%PDVNFOUTͳͲಛఆͷϑΥϧμΛࢦఆ͢Δ getwd() # 作業スペースを確認 #> [1]

    "/Users/suryu/business/cue2022aw_r104" # setwd(dir = ) # 作業スペースを変更 ύεͷදه͕8JOEPXTͱNBD04ɺ-JOVYͰҟͳΔͷͰ஫ҙ ˠίʔυΛڞ༗ͯ͠࡞ۀ͢Δࡍɺύεͷҧ͍͕໰୊ʹͳΔ͜ͱ͕͋Δ 34UVEJPͷϓϩδΣΫτػೳɺIFSFύοέʔδΛಋೖ͢Δ͜ͱΛקΊΔ  ͷද͕ࣔ͋ΔՕॴ͸3ͷίʔυͰ͋Δ͜ͱΛࣔ͢
  4. ʲਪ঑ʳ34UVEJPͷϓϩδΣΫτػೳͷར༻ ࡞ۀεϖʔεΛϓϩδΣΫτ୯ҐͰઃఆՄೳʹ͢Δ ෼ੳҊ݅ʹԠͯ͡ϓϩδΣΫτΛ෼͚Δ Ұͭͷ࡞ۀεϖʔεΛ࢖͏৔߹ 📄 📂 📄 📁 📂 📄

     📄 ϑΝΠϧ؅ཧ͕໘౗ɺෆಁ໌ʹͳΓ͕ͪ ͍ͭͷؒʹ͔ফ͑ͨσʔλ 📄 📂 📁  ෳ਺ਓͰίʔυΛฤू͢Δࡍɺ ࡞ۀεϖʔεͷύε͕ҟͳΔՄೳੑ΋͋Δ σʔλ΍εΫϦϓτ΁ͷΞΫηε͕؆қʹͳΔ (JUʹΑΔόʔδϣϯ؅ཧͷϕʔεͱͯ͠΋ར༻Ͱ͖Δ ϓϩδΣΫτػೳͷར఺ ҟͳΔ؀ڥͰ΋ಉ͡࡞ۀεϖʔε͕ઃఆ͞ΕΔ
  5.  ࣮ߦͯ͠ΈΑ͏ 3εΫϦϓτΛ৽ͨʹ։͍ͯɺͭ͗ͷίʔυΛهड़ ࣮ߦ͢Δίʔυ͕ॻ͔ΕͨߦʹΧʔιϧΛҠಈ A$USMA A&OUFSA͔ΒίϯιʔϧͰ࣮ߦ ιʔεύωϧͷӈ্ʹ͋ΔA3VOAϘλϯΛԡ࣮ͯ͠ߦ ⁞   

    ͷද͕ࣔ͋ΔՕॴ͸3ͷίʔυͰ͋Δ͜ͱΛࣔ͢ ·ͨ͸ # 行頭に # をつけた行や行の途中での # 以降はコメントとして扱われる # 引用符(" または ')で囲んだ文字は文字列として処理される print("Hello World")
  6.  ࢛ଇԋࢉɺ࿦ཧԋࢉ ԋࢉͷ༏ઌॱҐ͸਺ֶͱಉ͡  1 + 1 #> [1] 2

    5 - 5 #> [1] 0 2 * 3 #> [1] 6 (2 + 4) / 3 #> [1] 2 ׅހ಺ͷԋࢉ͔͚ࢉɾׂΓࢉ଍͠ࢉɾҾ͖ࢉ ࢉज़ԋࢉࢠʢ+, -, *, /ʣͷར༻ 9 > 8 #> [1] TRUE 1.1 <= 1.0 #> [1] FALSE "apple" == "apple" #> [1] TRUE "apple" != "banana" #> [1] TRUE 3Ͱ͸࿦ཧ஋ϕΫτϧͱͯ͠536&ʢਅʣɺ'"-4&ʢِʣɺ/"͕͋Δ ࿦ཧԋࢉࢠʢ, <=, >, >=, ==, !=ʣͷར༻
  7. ม਺΁ͷΦϒδΣΫτͷ୅ೖ  # Rでは <- (または ->、=)によってオブジェクトの内容を変数に割り当てる x <- 6

    y <- 3 # 変数は環境中に保存され、変数名により参照できる z <- x + y z #> [1] 9 # 変数に保存された内容は上書きされるまで残る x #> [1] 6 x <- 9 x #> [1] 9 # xの値が変わっても変更前に計算された値には影響がない z #> [1] 9 3Ͱ͸͢΂͕ͯΦϒδΣΫτʢม਺΋·ͨΦϒδΣΫτʣ
  8. ҙຯͷ͋Δ໊લΛ͚ͭΔ ม਺ͷར༻ʹΑΓɺಉ͡ॲཧΛෳ਺ճ࣮ߦ͢ΔखؒΛল͚Δ ॲཧ͕ෳࡶʹͳΔͱͲͷม਺͕Կͷ݁Ռɾ஋Λ΋͍ͬͯΔͷ͔͕Θ͔Γʹ͘͘ͳΔ ˠม਺ʹ͸Θ͔Γ΍໊͍͢લΛ͚ͭΔ͜ͱ͕ॏཁ ѱ͍ྫ B E %BUB ྑ͍ྫ NFBO@IPHF

    EG@QJZP EBUB@GVHB 3ͰͷҰൠతͳίʔσΟϯάελΠϧΛֶͿʹ͸ UJEZWFSTFTUZMFHVJEF IUUQTTUZMFUJEZWFSTFPSHJOEFYIUNM Λࢀর͢Δ → 3Ͱ͸େจࣈɾখจࣈɺશ֯ɾ൒֯͸۠ผ͞ΕΔ
  9. ؔ਺ 3ͷؔ਺͸ʮؔ਺໊ Ҿ਺໊஋ ʯͷܗͰ࣮ߦ͢Δ # Rには一般的な数学関数が定義されている sqrt(x = 2) #

    平方根 #> [1] 1.414214 sqrt(3) #> [1] 1.732051 log(10) # 自然対数 #> [1] 2.302585 log10(100) # 常用対数(底が10の対数) #> [1] 2 exp(1) # 指数関数 #> [1] 2.718282  ͻ͖͢͏ ͜ͷߨ࠲Ͱ͸3ͷؔ਺໊Λࣔ͢ࡍ͸ʮTRSU ؔ਺ʯͷΑ͏ʹׅހ෇͖Ͱදه͢Δ
  10. ϕΫτϧ c(1, 3, 5) #> [1] 1 3 5 #

    ベクトルの中の要素は同じデータ型となる c(1, "3", 5) # 数値が文字列に変換される #> [1] "1" "3" "5" c(TRUE, 1, FALSE) # 論理値が数値に変換される #> [1] 1 1 0 c(FALSE, 1, "aa") # 論理値、数値が文字列に変換される #> [1] "FALSE" "1" "aa"  ॱংͷ͋Δཁૉͷू·ΓΛ࡞੒͢Δʹ͸D ؔ਺ DPNCJOF͔Β Λ࢖͏
  11. Ϧετ # リストは異なるクラスからなるオブジェクトをひとまとめに扱える x <- list( c("a", "b", NA, "d"),

    num = c(3, 1.1, 5), data = head(mtcars, 1)) x #> [[1]] #> [1] "a" "b" NA "d" #> #> $num #> [1] 3.0 1.1 5.0 #> #> $data #> mpg cyl disp hp drat wt qsec vs am gear carb #> Mazda RX4 21 6 160 110 3.9 2.62 16.46 0 1 4 4  MJTU ؔ਺ʹΑΓϦετΦϒδΣΫτΛੜ੒͢Δ
  12. ࢀর  ΦϒδΣΫτ͸<ԋࢉࢠ΍<<ԋࢉࢠΛ࢖ͬͯࢀরͰ͖Δ <>͸ཁૉͷ൪߸Λࣔ͢ c(1, 3, 5)[2] # ベクトル中の2番目の要素を参照 #>

    [1] 3 # 名前付きの数値ベクトルを作成 fruits <- c(apple = 120, banana = 100, grape = 800) length(fruits) # 要素の数を表示 #> [1] 3 names(fruits) # 要素に与えられた名前を出力 #> [1] "apple" "banana" "grape" fruits[1] # 要素の位置を指定して参照する #> apple #> 120 fruits["grape"] # 要素の名前を指定して参照する #> grape #> 800 fruits[[1]] # 値だけを参照する #> [1] 120 fruits[["grape"]] #> [1] 800
  13. ࢀর  ΦϒδΣΫτ͸<ԋࢉࢠ΍<<ԋࢉࢠΛ࢖ͬͯࢀরͰ͖Δ # リストオブジェクトに対する[演算子を使った参照の返り値はリスト x[1] #> [[1]] #> [1]

    "a" "b" NA "d" x["num"] #> $num #> [1] 3.0 1.1 5.0 # [[演算子での参照により、リストオブジェクトの要素を元のクラスとして出力する x[[2]] #> [1] 3.0 1.1 5.0 x[["data"]] #> mpg cyl disp hp drat wt qsec vs am gear carb #> Mazda RX4 21 6 160 110 3.9 2.62 16.46 0 1 4 4
  14. ύοέʔδͷར༻ʹΑΓɺ3ͰͰ͖Δ͜ͱ͕޿͕Δ 3ʹඪ४ͰΠϯετʔϧ͞Ε͍ͯΔ૊ΈࠐΈύοέʔδ # 組み込みパッケージの確認 rownames(installed.packages(priority = "base")) #> [1] "base"

    "compiler" "datasets" "graphics" "grDevices" "grid" #> [7] "methods" "parallel" "splines" "stats" "stats4" "tcltk" #> [13] "tools" "utils" "base" "compiler" "datasets" "graphics" #> [19] "grDevices" "grid" "methods" "parallel" "splines" "stats" #> [25] "stats4" "tcltk" "tools" "utils"  ύοέʔδʜؔ਺΍σʔληοτͷू·Γ ࣌఺Ͱͷ$3"/ʹొ࿥͞Εͨύοέʔδ਺͸ ݅ $3"/Ҏ֎ͷύοέʔδ഑෍ݩ (JU)VC #JPDPOEVDUPS IUUQCJPDPOEVDUPSPSH IUUQTHJUIVCDPN 3'PSHF 3VOJWFSTF IUUQTSVOJWFSTFEFW IUUQTSGPSHFSQSPKFDUPSH
  15. ύοέʔδͷΠϯετʔϧɺಡΈࠐΈ # 1. CRANに登録されているパッケージのインストール # RStudioでは`tab` の入力によってinstall.packages()関数の中でのパッケージ名の補完を行う install.packages("here") install.packages("remotes") #

    2. GitHub上のパッケージの追加 <user名>/<repository名> remotes::install_github("uribo/ssdse")  ύοέʔδͷΠϯετʔϧ ύοέʔδͷಡΈࠐΈͱؔ਺ͷݺͼग़͠ here() # パッケージを読み込んでいないと関数を利用できない #> Error in here(): could not find function "here" library(here) # hereパッケージを利用可能にする #> here() starts at /Users/suryu/business/cue2022aw_r104 here() #> [1] "/Users/suryu/business/cue2022aw_r104" # library()関数でパッケージを読み込まずにパッケージの関数を利用することもできる # 名前空間(パッケージ名と関数名)を<パッケージ名>::<関数名>の形で指定し、関数を直接実行する方法 here::here() #> [1] "/Users/suryu/business/cue2022aw_r104" 
  16. ύοέʔδͱͷग़ձ͍ํ $3"/5BTL7JFXT (JU)VCͰͷݕࡧ $3"/CFSSJFT ෼໺͝ͱʹؔ࿈͢ΔύοέʔδΛϦετԽͨ͠΋ͷ ྫ .JTTJOH%BUB $BVTBM*OGFSFODF .BDIJOF-FBSOJOH SFNPUFTJOTUBMM@HJUIVC

    ؔ਺Λ࢖ͬͯΠϯετʔϧ $3"/ొ࿥લͷύοέʔδ͕ଟ͋͘Δ $3"/ʹొ࿥͞Εͨύοέʔδͷ৘ใΛൃ৴͢ΔαΠτ IUUQEJSLFEEFMCVFUUFMDPNDSBOCFSSJFT IUUQTHJUIVCDPNUPQJDTS τϐοΫͰ୳͢ͷ͕͓͢͢Ί IUUQTHJUIVCDPNUPQJDTSQBDLBHFT
  17.  # パッケージを読み込むといくつかのパッケージが同時に利用可能になる library(tidyverse) #> ── Attaching core tidyverse packages

    ────── tidyverse 2.0.0 ── #> ✔ dplyr 1.1.2 ✔ readr 2.1.4 #> ✔ forcats 1.0.0 ✔ stringr 1.5.0 #> ✔ ggplot2 3.4.2 ✔ tibble 3.2.1 #> ✔ lubridate 1.9.2 ✔ tidyr 1.3.0 #> ✔ purrr 1.0.1 #> ── Conflicts ───────────────────── tidyverse_conflicts() ── #> ✖ dplyr::filter() masks stats::filter() #> ✖ dplyr::lag() masks stats::lag() #> ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors ʲਪ঑ʳUJEZWFSTFύοέʔδ σʔλ෼ੳͰ࢖͏ػձͷଟ͍ύοέʔδΛ·ͱΊͨύοέʔδ ͜ΕΒͷύοέʔδ͸౷Ұ͞Εͨઃܭࢥ૝Ͱ։ൃ͞Ε͍ͯΔͨΊ֮͑΍͍͢ UJEZWFSTFύοέʔδΛΠϯετʔϧ͢Δͱؔ࿈͢Δύοέʔδ΋Πϯετʔϧ͞ΕΔ
  18. ʲਪ঑ʳUJEZWFSTFύοέʔδ (BSSFUUBOE)BEMFZ  Λݩʹ࡞੒ ಡΈࠐΈ ੔ܗ Ճ޻ ՄࢹԽ Ϟσϧ ఻ୡ

    IUUS KTPOMJUF YNM όΠφϦϑΝΠϧͷಡΈࠐΈ ΢Σϒ্ͷσʔλɺඇߏ଄σʔλͷಡΈࠐΈ
  19. දܗࣜͷσʔλʢσʔλϑϨʔϜʣ  # データフレームの作成方法はいくつかある # ここではtibble::tibble()関数を使う方法を紹介する # tibbleパッケージはtidyverseに含まれるため、個別にパッケージを読み込む必要はない # library(tibble)

    df_zoo <- tibble( # 変数 = 値の形式でデータを記述する # 複数の値を扱うときは c()関数でベクトルを作成 taxon = c("食肉類", "霊長類", "霊長類", "食肉類", "鳥類"), name = c("レッサーパンダ", "チンパンジー", "マントヒヒ", "ライオン", "フンボルトペンギン"), body_length_cm = c(63.5, 85, 80, 250, 69), weight_kg = c(6, 60, 20, 225, 6))
  20. දܗࣜͷσʔλʢσʔλϑϨʔϜʣ # 出力を確認 # 一行目はデータフレームのサイズ(行と列の数)を示す # 二行目は変数の名前、三行目は各変数のデータ型、三行目以降にデータを表示 df_zoo #> #

    A tibble: 5 × 4 #> taxon name body_length_cm weight_kg #> <chr> <chr> <dbl> <dbl> #> 1 食肉類 レッサーパンダ 63.5 6 #> 2 霊長類 チンパンジー 85 60 #> 3 霊長類 マントヒヒ 80 20 #> 4 食肉類 ライオン 250 225 #> 5 鳥類 フンボルトペンギン 69 6 
  21. # [演算子を使った参照では [行, 列]の形式となる # 返り値はデータフレーム df_zoo[2, ] # 2行目を表示

    #> # A tibble: 1 × 4 #> taxon name body_length_cm weight_kg #> <chr> <chr> <dbl> <dbl> #> 1 霊長類 チンパンジー 85 60 df_zoo[, 3] # 3列目を表示 #> # A tibble: 5 × 1 #> body_length_cm #> <dbl> #> 1 63.5 #> 2 85 #> 3 80 #> 4 250 #> 5 69 df_zoo[, "name"] # name列を表示 #> # A tibble: 5 × 1 #> name #> <chr> #> 1 レッサーパンダ #> 2 チンパンジー #> 3 マントヒヒ #> 4 ライオン #> 5 フンボルトペンギン σʔλϑϨʔϜதͷཁૉͷࢀর  # $演算子、[[演算子を使った参照の返り値はベクトル df_zoo$name #> [1] "レッサーパンダ" "チンパンジー" "マントヒヒ" #> [4] "ライオン" "フンボルトペンギン" df_zoo[[1]] #> [1] "食肉類" "霊長類" "霊長類" "食肉類" "鳥類" df_zoo[["name"]] #> [1] "レッサーパンダ" "チンパンジー" "マントヒヒ" #> [4] "ライオン" "フンボルトペンギン" 
  22. ଟ༷ͳදܗࣜϑΝΠϧͷಡΈࠐΈSFBESύοέʔδ read_csv(file = here("data-raw/tokushima_zoo_animals5.csv")) #> Rows: 5 Columns: 4 #>

    ── Column specification ──────────────────────────────────────────────────────── #> Delimiter: "," #> chr (2): taxon, name #> dbl (2): body_length_cm, weight_kg #> #> ℹ Use `spec()` to retrieve the full column specification for this data. #> ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message. #> # A tibble: 5 × 4 #> taxon name body_length_cm weight_kg #> <chr> <chr> <dbl> <dbl> #> 1 食肉類 レッサーパンダ 63.5 6 #> 2 霊長類 チンパンジー 85 60 #> 3 霊長類 マントヒヒ 80 20 #> 4 食肉類 ライオン 250 225 #> 5 鳥類 フンボルトペンギン 69 6  ۠੾Γจࣈ ֤ྻ͕Ͳͷσʔλܕͱͯ͠ಡΈࠐ·Ε͔ͨ
  23. ಡΈࠐΈ࣌ͷจࣈԽ͚ͷճආ read_csv(here("data-raw/SSDSE-B-2022.csv"), show_col_types = FALSE) #> # A tibble: 565

    × 110 #> SSDSE-B-202…¹ Code Prefe…² A1101 A110101 A110102 A1102 A110201 A110202 A1301 #> <dbl> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> #> 1 NA <NA> <NA> "\x9… "\x91\… "\x91\… "\x9… "\x93\… "\x93\… "15\… #> 2 2019 R010… "\x96k… "525… "24720… "27780… "521… "24550… "27560… "565… #> 3 2018 R010… "\x96k… "528… "24890… "27970… "525… "24750… "27780… "577… #> … (省略) read_csv(here("data-raw/SSDSE-B-2022.csv"), show_col_types = FALSE, locale = locale(encoding = "cp932")) #> # A tibble: 565 × 110 #> SSDSE-B-202…¹ Code Prefe…² A1101 A110101 A110102 A1102 A110201 A110202 A1301 #> <dbl> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> #> 1 NA <NA> <NA> 総人… 総人口… 総人口… 日本… 日本人… 日本人… 15歳… #> 2 2019 R010… 北海道 5250… 2472000 2778000 5211… 2455000 2756000 5650… #> 3 2018 R010… 北海道 5286… 2489000 2797000 5253… 2475000 2778000 5770… #> … (省略)  จࣈԽ͚͸Τϥʔͱͯ͠ॲཧ͞Εͳ͍ MPDBMFҾ਺ʹMPDBMF FODPEJOH Λ༩͑ͯద੾ͳΤϯίʔσΟϯάΛࢪ͢ 
  24. දܭࢉιϑτ͔ΒͷಡΈࠐΈSFBEYMύοέʔδ library(readxl) # tidyverseに含まれるのでインストールは不要。ただしパッケージの読み込みは必要 read_xlsx(here("data-raw/SSDSE-B-2022.xlsx"), sheet = 1) #> #

    A tibble: 565 × 110 #> SSDSE-B-202…¹ Code Prefe…² A1101 A110101 A110102 A1102 A110201 A110202 A1301 #> <dbl> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> #> 1 NA <NA> <NA> 総人… 総人口… 総人口… 日本… 日本人… 日本人… 15歳… #> 2 2019 R010… 北海道 5250… 2472000 2778000 5211… 2455000 2756000 5650… #> 3 2018 R010… 北海道 5286… 2489000 2797000 5253… 2475000 2778000 5770… #> … (省略)  ΤΫηϧγʔτͷ಺༰Λ൓өͯ͠ಡΈࠐΉ
  25. ݸผͷσʔλಡΈࠐΈʹಛԽͨ͠ύοέʔδͷར༻ 44%4&ͷσʔλಡΈࠐΈʜྻ໊͕Θ͔Γʹ͍͘ ߦ໨ʹ೔ຊޠͰͷྻ໊͕ه࿥͞Ε͍ͯΔ ೔ຊޠྻ໊Λར༻ͯ͠෼ੳΛ͍ͨ͠ͱ͖͕͋Δ TTETFύοέʔδΛ༻ҙ library(ssdse) read_ssdse_b(here("data-raw/SSDSE-B-2022.csv"), lang = "ja")

    #> # A tibble: 564 × 13 #> 年度 地域…¹ 都道府県 人口…² 自然…³ 経済基…⁴ 教育$…⁵ 労働$…⁶ 文化…⁷ 居住$…⁸ #> <int> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> #> 1 2019 R01000 北海道 5250000 9.8 21463 404 185269 119613 32486 #> 2 2018 R01000 北海道 5286000 9.5 21437 422 200363 111793 35761 #> 3 2017 R01000 北海道 5320000 9.1 21430 438 211045 107166 37062 #> … (省略)  ໨తʹԠͯ͡ύοέʔδɾؔ਺Λ࢖͍෼͚Δ
  26. ඪ४ͷϓϩοτػೳ͕ॆ࣮ barplot(df_zoo$body_length_cm, names.arg = df_zoo$name) hist(df_zoo$weight_kg) plot(df_zoo$body_length_cm, df_zoo$weight_kg)  

     ͞Βʹৄࡉͳઃఆ͕Մೳ ๮άϥϑ ࢄ෍ਤ ώετάϥϜ ໨తͷՄࢹԽදݱʹԠͯؔ͡਺Λ࢖͍෼͚Δ
  27. 3ͰͷՄࢹԽΛ؆୯ʹHHQMPUύοέʔδ ggplot(df_zoo, aes(weight_kg)) + geom_histogram(bins = 5) ggplot(df_zoo, aes(name, body_length_cm))

    + geom_bar(stat = "identity") ggplot(df_zoo, aes(body_length_cm, weight_kg)) + geom_point()  ๮άϥϑ ࢄ෍ਤ ώετάϥϜ   ౷Ұతͳهड़Ͱཧղ͠΍͍͢
  28. ࣍ͷҰख3ʹֶ͍ͭͯͿͨΊͷॻ੶ɾαΠτ അ৔ਅ࠸  ʮ3ݴޠͰ͸͡ΊΔϓϩάϥϛϯάͱσʔλ෼ੳʯιγϜ *4#/ দଜ༏࠸ɺ౬୩ܒ໌ɺلϊఆอྱɺલా࿨׮  ʮ3ϢʔβͷͨΊͷ34UVEJP<࣮ફ>ೖ໳ʯٕज़ධ࿦ࣾ *4#/ ੴాج޿

     ʮ3 で ֶ ぶデ ʔλɾ プ ϩ グ ϥϛϯ グ ೖ໳34UVEJPΛ׆༻͢Δʯڞཱग़൛ *4#/ )BEMFZ8JDLIBNɺ(BSSFUU(SPMFNVOEஶɺࠇ઒ར໌༁ɺେڮਅ໵ٕज़؂म   ʮ3Ͱ͸͡ΊΔσʔλαΠΤϯεʢ3GPS%BUB4DJFODFʣʯΦϥΠϦʔɾδϟύϯ *4#/IUUQTSETIBEDPO[ +BFIZVO4POHɺ:VLJ:BOBJʮࢲͨͪͷ3ϕετϓϥΫςΟεͷ୳ڀʯIUUQTXXXKBZTPOHOFU3#PPL