ミクロ政治データ分析実習

第3回 Rの基本的な操作とベクトル操作

(そん)  財泫(じぇひょん)

関西大学総合情報学部

2024-04-25

プロジェクト機能のすゝめ

  • ファイルの読み込み/書き出しの際にパス問題が生じる場合が多い。
  • 毎回の実習、課題用にプロジェクトを作成することを強く推奨する。
    • プロジェクトを使わない場合、本スライド/資料上のコードの再現性は保証しない。
  • プロジェクトの作成方法はサポートページの「Rの使い方 > プロジェクト管理」を参照

様々な演算子

電卓としてのRと算術演算子

  • Step 1: File > New File > R Script
  • Step 2: Sourceペインの大きさを最大化する。
  • Step 3: Sourceペインに以下のように入力する
1 + 2 + 3
  • Step 4: Step 3で入力した行に移動し、「Cmd(⌘) + Return(macOS)」または「Ctrl + Enter(Linux/Windows)」
    • Consoleペインに以下のように出力されればOK
[1] 6

Rの算術演算子

  • 結果として何らかの数字が返される
  • 累乗(^)を除き、演算子の前後にはスペースを入れるのがRの流儀
    • 必須ではないが、コードが読みやすくなる
演算子 意味 結果
+ 2 + 5 7
- 2 - 8 -6
* 7 * 3 21
/ 16 / 5 3.2
^** 累乗(べき乗) 2^3または2 ** 3 8
%% 剰余 (モジュロ) 18 %% 7 4
%/% 整数商 18 %/% 7 2

Rの論理演算子

  • 真(TRUE)か偽(FALSE)の値を返す演算子
3 > 2 # 3は2より大きいか
[1] TRUE
5 <= 10 # 5は10以下か
[1] TRUE
2 + 3 == 1 # 2 + 3は1に等しいか
[1] FALSE
2 + 2 != 2 * 2 # 2 + 3は2 * 2と等しくないか
[1] FALSE
(2 + 2) != (2 * 2) # こっちの方がもう少し読みやすい
[1] FALSE

Rの論理演算子(まとめ)

  • 「等しい」は=でなく、==であることに注意すること
    • =は代入演算子として機能する(他の言語と同じ)。
演算子 意味 結果
x < y xyより小さい 3 < 1 FALSE
x <= y xyと等しいか、小さい 2 <= 2 TRUE
x > y xyより大きい 6 > 5 TRUE
x >= y xyと等しいか、大きい 4 >= 5 FALSE
x == y xyは等しい (2 + 3) == (4 + 1) TRUE
x != y xyは等しくない ((2 * 3) + 1) != (2 * (3 + 1)) TRUE

論理演算子: ANDとOR

AND演算子: &

  • &を挟む左右の両側TRUEの場合のみTRUEを返す
(2 + 3 == 5) & (1 * 2 == 3) # TRUE and FALSEだから
[1] FALSE
(2 + 2 == 4) & (2 * 2 == 4) # TRUE and TRUEだから
[1] TRUE


OR演算子: |

  • |を挟む左右の片側、あるいは両側TRUEの場合のみTRUEを返す
(2 + 3 == 5) | (1 * 2 == 3) # TRUE or FALSEだから
[1] TRUE
(2 + 2 != 4) | (2 * 2 != 4) # FALSE or FALSEだから
[1] FALSE

練習問題

  1. \(\frac{1234 \times 4321}{3}\)
  2. \(\frac{1234 \times 4321}{3}\)の余りは?
    • \((1234 \times 4321) \text{ mod } 3\)とも表記する
  3. \(2 \times 3\)\(2 + 3\) は等しいか
  4. \(1009 \text{ mod } 3\) は0か
  5. \(5^5\) は100以上、かつ1000未満であるか

練習問題(答え)

(1234 * 4321) / 3
[1] 1777371
(1234 * 4321) %% 3
[1] 1
2 * 3 == 2 + 3
[1] FALSE
1009 %% 3 == 0
[1] FALSE
(5^5 >= 100) & (5^5 < 1000)
[1] FALSE

ベクトル

200行のコードを書いてみよう

  • 123454321 \(\times\) 2を計算してみよう
  • 123454321 \(\times\) 3を計算してみよう
  • 123454321 \(\times\) 4を計算してみよう
  • 123454321 \(\times\) 199を計算してみよう
  • 123454321 \(\times\) 200を計算してみよう
123454321 * 2
123454321 * 3
123454321 * 4

...

123454321 * 199
123454321 * 200


効率的な方法は?

  • 123454321をコピーし貼り付けながら計算を繰り返す
  • 123454321xという名前を付けて、x * 1のように表記する

Rにおけるベクトル

ベクトル(vector): Rにおけるデータの最小単位

  • ベクトル内の全ての要素(element)は同じデータ型(数値型、文字型など)
    • 数値と文字列が混在するベクトルは作成不可
  • c()関数で作成
    • ()の中にベクトルの要素を入力
    • ベクトルの長さが2以上の場合、各要素を,(半角コンマ)で区切る。
      • 必須ではないが、,の後ろには半角スペースを入れるとコードが読みやすくなる(前は不要)。
    • 長さ1のベクトルの場合、c()は省略可能
      • x <- cat("cat")でも、x <- "cat"でも良い

ベクトルの作成

  • <-演算子で格納
    • ベクトル名という名前のオブジェクト(object)が生成され、作業環境内に保存される。
    • 「作業環境」や「オブジェクト」の概念は次回解説
  • 格納しない場合、作業環境に保存されず、出力のみ
ベクトル名 <- c(要素1, 要素2, ...)


例1: 要素が1, 2, 3, 4, 5の長さ5の数値型ベクトル

  • ベクトルをmy_vector1という名前で作業環境に格納
my_vector1 <- c(1, 2, 3, 4, 5)


例2: 要素が”Cat”, “Lion”, “Tiger”の長さ3の文字型ベクトルをmy_vector2という名で格納

  • 文字は必ず"'で囲む
my_vector2 <- c("Cat", "Lion", "Tiger")

オブジェクトの名前

基本的にオブジェクト名は何でも良いが、いくつかの禁則事項がある

  • 特殊記号、スペース禁止(例外:_.
    • スペースの代わりに_.が使われるが、_を推奨
  • 数字、または_.で始まるオブジェクト名は使えない
  • 予約語は使えない(forifなど)
    • 使える予約語もあるが、非推奨
  • 日本語、ハングル、簡体字、アラビア文字も可能であるが、非推奨


良いオブジェクト名は

  • オブジェクト名を見るだけで、中身の内容が想像できる
  • 短いオブジェクト名
  • 結論:短い、かつ具体的な名前が望ましい
    • \(\Rightarrow\) どうすりゃいいんだ…

オブジェクトの表示

現在の作業環境におけるオブジェクトリスト

  • 方法1:RStudioのEnvironmentペインで確認
  • 方法2:Consoleペインでls()を入力
ls()
[1] "my_vector1" "my_vector2"


オブジェクトの出力

オブジェクト名のみ入力(print(オブジェクト名)もOK)

my_vector1 # print(my_vector1) でもOK
[1] 1 2 3 4 5
my_vector2 # print(my_vector2) でもOK
[1] "Cat"   "Lion"  "Tiger"
  • Rを再起動すると作業環境が初期化されるため、もう一回作成する必要がある。
    • コードを記録し、残すことが重要

比較

コードは一行増えたものの、全体的にはコードの量が著しく減る。

  • ただし、200行書かないといけない点は変わらない。
    • より効率的な方法は?
    • \(\rightarrow\) ベクトル・リサイクル(vector recycle)
123454321 * 2
## [1] 246908642
123454321 * 3
## [1] 370362963
123454321 * 4
## [1] 493817284
123454321 * 5
## [1] 617271605
x <- 123454321
x * 2
## [1] 246908642
x * 3
## [1] 370362963
x * 4
## [1] 493817284
x * 5
## [1] 617271605

等差数列ベクトルの作り方

公差 = 1の等差数列

  • :演算子を利用
c(1, 2, 3, 4, 5, 6, 7)
[1] 1 2 3 4 5 6 7
1:7
[1] 1 2 3 4 5 6 7
8:3
[1] 8 7 6 5 4 3

公差 \(\neq\) 1の等差数列

  • seq()関数の使用 (byで公差を指定)
c(1, 3, 5, 7, 9)
[1] 1 3 5 7 9
seq(1, 9, by = 2)   # 1から9までの公差2の等差数列
[1] 1 3 5 7 9
seq(1, 5, by = 0.5) # 1から5までの公差0.5の等差数列
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
seq(8, 3, by = -1)  # 8から3までの公差-1の等差数列
[1] 8 7 6 5 4 3

ベクトル同士の演算

例) ベクトルXとベクトルY同士の演算

  • ケース1: Xの長さ = Yの長さ
  • ケース2: Xの長さ \(\neq\) Yの長さ


参考) ベクトルの長さの求め方

  • length()関数を使用
length(my_vector1) # c(1, 2, 3, 4, 5)
[1] 5
length(my_vector2) # c("Cat", "Lion", "Tiger")
[1] 3

ケース1: ベクトルの長さが同じ場合

  • 同じ位置の要素同士の演算
ベクトル/位置 1番目 2番目 3番目 4番目 5番目 6番目
my_vec1 1 2 3 4 5 6
\(\times\) \(\times\) \(\times\) \(\times\) \(\times\) \(\times\)
my_vec2 0 1 2 0 1 2
結果 0 2 6 0 5 12


# my_vec1とmy_vec2は同じ長さ
my_vec1 <- c(1, 2, 3, 4, 5, 6) # 長さ6のベクトル
my_vec2 <- c(0, 1, 2, 0, 1, 2) # 長さ6のベクトル
my_vec1 * my_vec2
[1]  0  2  6  0  5 12

ケース2: ベクトルの長さが異なる場合

  • 短い方のベクトルがリサイクルされる(ベクトル・リサイクル)。
    • my_vec4の方が短いため、足りない分(太字の部分)はリサイクルされる。
ベクトル/位置 1番目 2番目 3番目 4番目 5番目 6番目
my_vec3 1 2 3 4 5 6
\(\times\) \(\times\) \(\times\) \(\times\) \(\times\) \(\times\)
my_vec4 0 1 0 1 0 1
結果 0 2 0 4 0 6


# my_vec3とmy_vec4の長さは異なる
my_vec3 <- c(1, 2, 3, 4, 5, 6) # 長さ6のベクトル
my_vec4 <- c(0, 1)             # 長さ2のベクトル
my_vec3 * my_vec4
[1] 0 2 0 4 0 6

最初の問題

結果はどのコードでも同じ

答え(3行 ver.)

x <- 123454321
y <- 2:200
x * y

答え(2行 ver.)

x <- 123454321
x * 2:200

または、

x <- 2:200
123454321 * x

答え(1行 ver.)

123454321 * 2:200
123454321 * 2:200
  [1]   246908642   370362963   493817284   617271605   740725926   864180247
  [7]   987634568  1111088889  1234543210  1357997531  1481451852  1604906173
 [13]  1728360494  1851814815  1975269136  2098723457  2222177778  2345632099
 [19]  2469086420  2592540741  2715995062  2839449383  2962903704  3086358025
 [25]  3209812346  3333266667  3456720988  3580175309  3703629630  3827083951
 [31]  3950538272  4073992593  4197446914  4320901235  4444355556  4567809877
 [37]  4691264198  4814718519  4938172840  5061627161  5185081482  5308535803
 [43]  5431990124  5555444445  5678898766  5802353087  5925807408  6049261729
 [49]  6172716050  6296170371  6419624692  6543079013  6666533334  6789987655
 [55]  6913441976  7036896297  7160350618  7283804939  7407259260  7530713581
 [61]  7654167902  7777622223  7901076544  8024530865  8147985186  8271439507
 [67]  8394893828  8518348149  8641802470  8765256791  8888711112  9012165433
 [73]  9135619754  9259074075  9382528396  9505982717  9629437038  9752891359
 [79]  9876345680  9999800001 10123254322 10246708643 10370162964 10493617285
 [85] 10617071606 10740525927 10863980248 10987434569 11110888890 11234343211
 [91] 11357797532 11481251853 11604706174 11728160495 11851614816 11975069137
 [97] 12098523458 12221977779 12345432100 12468886421 12592340742 12715795063
[103] 12839249384 12962703705 13086158026 13209612347 13333066668 13456520989
[109] 13579975310 13703429631 13826883952 13950338273 14073792594 14197246915
[115] 14320701236 14444155557 14567609878 14691064199 14814518520 14937972841
[121] 15061427162 15184881483 15308335804 15431790125 15555244446 15678698767
[127] 15802153088 15925607409 16049061730 16172516051 16295970372 16419424693
[133] 16542879014 16666333335 16789787656 16913241977 17036696298 17160150619
[139] 17283604940 17407059261 17530513582 17653967903 17777422224 17900876545
[145] 18024330866 18147785187 18271239508 18394693829 18518148150 18641602471
[151] 18765056792 18888511113 19011965434 19135419755 19258874076 19382328397
[157] 19505782718 19629237039 19752691360 19876145681 19999600002 20123054323
[163] 20246508644 20369962965 20493417286 20616871607 20740325928 20863780249
[169] 20987234570 21110688891 21234143212 21357597533 21481051854 21604506175
[175] 21727960496 21851414817 21974869138 22098323459 22221777780 22345232101
[181] 22468686422 22592140743 22715595064 22839049385 22962503706 23085958027
[187] 23209412348 23332866669 23456320990 23579775311 23703229632 23826683953
[193] 23950138274 24073592595 24197046916 24320501237 24443955558 24567409879
[199] 24690864200

ベクトル要素の抽出

ベクトルから任意の要素を抽出する2つの方法

  • 方法1: 抽出する要素の位置を指定する。
  • 方法2: 論理演算子を利用する。


例) 11, 12, 13, …, 19, 20が格納されたmy_vec5

my_vec5 <- 11:20 # my_vec <- seq(11, 20, by = 1) と同じ
my_vec5
 [1] 11 12 13 14 15 16 17 18 19 20


位置 1 2 3 4 5 6 7 8 9 10
my_vec5 11 12 13 14 15 16 17 18 19 20
  • 他の言語と違い、位置の番号は0からでなく、1からスタートすることに注意

要素の抽出: 位置指定

  • ベクトル名[抽出する要素の位置]

例1) my_vec5の3番目の要素

my_vec5[3]
[1] 13

例2) my_vec5の2, 3, 4, 5番目の要素

  • []内に抽出する要素の位置を表すベクトルを指定
  • pos_vecc(2, 3, 4, 5)seq(2, 5, by = 1)2:5はすべて同じ意味
pos_vec <- c(2, 3, 4, 5)
my_vec5[pos_vec]
[1] 12 13 14 15
my_vec5[c(2, 3, 4, 5)]
[1] 12 13 14 15
my_vec5[seq(2, 5, by = 1)]
[1] 12 13 14 15
my_vec5[2:5]
[1] 12 13 14 15

要素の抽出: 論理演算子の利用

  • それぞれの要素に対し、抽出するか(TRUE)しないか(FALSE)を指定
  • 表形式データにおける行の抽出を自由自在に操るためには必須知識(第9回)

例1) my_vec5から1, 4, 7, 9, 10番目の要素を抽出

  • []内にベクトルの長さ分のベクトルを更に入力する必要があるため、あまり使わない方法
# my_vec5[c(1, 4, 7, 9, 10)] と同じ結果
my_vec5[c(TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE)]
[1] 11 14 17 19 20

例2) my_vec5から奇数のみ抽出(論理演算子の利用)

# my_vec5を2で割った場合、余りが1ならTRUE、その他はFALSE
my_vec5 %% 2 == 1
 [1]  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE
my_vec5[my_vec5 %% 2 == 1]
[1] 11 13 15 17 19

データの入出力

表形式データの読み込み

{tidyverse}パッケージが提供するread_csv()関数を利用

  • オブジェクト名 <- read_csv("パスを含むファイル名")
  • 以下の例はプロジェクト・フォルダー内にDataという名の下位フォルダーがあり、その中にPref_Vote.csvが保存されている場合。
    • パスは"Data/Pref_Vote.csv"
    • JDCat分析ツールを使用する場合、予めデータをアップロードしておくこと。
      • ファイルアップロードの方法はサポートページの「Rの使い方 > ファイル管理」を参照
      • データ(Pref_Vote.csv)はLMSから入手
library(tidyverse)
my_data <- read_csv("Data/Pref_Vote.csv")

注意:read_csv()read.csv()は区別しよう。

 両方.csv形式データを読み込む関数であるが、read.csv()はR内蔵関数、read_csv()は{tidyverse}を読み込まないと使用できない関数である。後者の方が見やすいメリットがある。本講義ではread_csv()のみを使用する。課題の際、read.csv()関数を使うと減点とする。

データの出力

  • オブジェクト名、またはprint(オブジェクト名)
# my_dataの中身の出力するコード
# print(my_data) でもOK
my_data
# A tibble: 47 × 13
      ID Pref   Zaisei Over65 Under30 Jimin Minshin Komei Kyosan Ishin Shamin
   <dbl> <chr>   <dbl>  <dbl>   <dbl> <dbl>   <dbl> <dbl>  <dbl> <dbl>  <dbl>
 1     1 北海道  0.419   29.1    24.7  32.8    30.6 13.4    3.43 11.4    1.68
 2     2 青森県  0.332   30.1    23.9  40.4    24.6 12.8    3.82  8.92   3.41
 3     3 岩手県  0.341   30.4    24.5  34.9    22.4  8.61   5.16 11.2    5.29
 4     4 宮城県  0.596   25.8    27.3  36.7    25.4 13.4    3.97  9.99   3.62
 5     5 秋田県  0.299   33.8    21.4  43.5    22.7 11.2    5.17  7.56   5.12
 6     6 山形県  0.342   30.8    24.8  42.5    21.5 11.8    4.3   7.6    5.2 
 7     7 福島県  0.509   28.7    25.2  33.8    28.3 11.0    3.43 10.4    3.24
 8     8 茨城県  0.633   26.8    26.6  40.6    19.0 15.0    6.67 10.1    2.88
 9     9 栃木県  0.622   25.9    26.8  38.8    21.6 12.4   10.9   7      2.05
10    10 群馬県  0.603   27.6    26.6  42.1    19.3 13.8    5.61 10      2.44
# ℹ 37 more rows
# ℹ 2 more variables: Region2 <dbl>, Region6 <dbl>

データが全部見えない?

1行目

  • 意味: 47行13列の表形式データ
# A tibble: 47 × 13


最終行

  • 意味: 表示された行以外にも更に37行があり、Region2Region6は画面では省略されている。
    • 文字サイズが小さい or 画面が大きい場合は省略されず、13列がすべて出力される場合もある。
# … with 37 more rows, and 2 more variables: Region2 <dbl>, Region6 <dbl>

読み込んだデータの出力

  • オブジェクト名、またはprint(オブジェクト名)
my_data
# A tibble: 47 × 13
      ID Pref   Zaisei Over65 Under30 Jimin Minshin Komei Kyosan Ishin Shamin
   <dbl> <chr>   <dbl>  <dbl>   <dbl> <dbl>   <dbl> <dbl>  <dbl> <dbl>  <dbl>
 1     1 北海道  0.419   29.1    24.7  32.8    30.6 13.4    3.43 11.4    1.68
 2     2 青森県  0.332   30.1    23.9  40.4    24.6 12.8    3.82  8.92   3.41
 3     3 岩手県  0.341   30.4    24.5  34.9    22.4  8.61   5.16 11.2    5.29
 4     4 宮城県  0.596   25.8    27.3  36.7    25.4 13.4    3.97  9.99   3.62
 5     5 秋田県  0.299   33.8    21.4  43.5    22.7 11.2    5.17  7.56   5.12
 6     6 山形県  0.342   30.8    24.8  42.5    21.5 11.8    4.3   7.6    5.2 
 7     7 福島県  0.509   28.7    25.2  33.8    28.3 11.0    3.43 10.4    3.24
 8     8 茨城県  0.633   26.8    26.6  40.6    19.0 15.0    6.67 10.1    2.88
 9     9 栃木県  0.622   25.9    26.8  38.8    21.6 12.4   10.9   7      2.05
10    10 群馬県  0.603   27.6    26.6  42.1    19.3 13.8    5.61 10      2.44
# ℹ 37 more rows
# ℹ 2 more variables: Region2 <dbl>, Region6 <dbl>
  • print(オブジェクト名, n = 行数)
print(my_data, n = 15)
# A tibble: 47 × 13
      ID Pref     Zaisei Over65 Under30 Jimin Minshin Komei Kyosan Ishin Shamin
   <dbl> <chr>     <dbl>  <dbl>   <dbl> <dbl>   <dbl> <dbl>  <dbl> <dbl>  <dbl>
 1     1 北海道    0.419   29.1    24.7  32.8    30.6 13.4    3.43 11.4    1.68
 2     2 青森県    0.332   30.1    23.9  40.4    24.6 12.8    3.82  8.92   3.41
 3     3 岩手県    0.341   30.4    24.5  34.9    22.4  8.61   5.16 11.2    5.29
 4     4 宮城県    0.596   25.8    27.3  36.7    25.4 13.4    3.97  9.99   3.62
 5     5 秋田県    0.299   33.8    21.4  43.5    22.7 11.2    5.17  7.56   5.12
 6     6 山形県    0.342   30.8    24.8  42.5    21.5 11.8    4.3   7.6    5.2 
 7     7 福島県    0.509   28.7    25.2  33.8    28.3 11.0    3.43 10.4    3.24
 8     8 茨城県    0.633   26.8    26.6  40.6    19.0 15.0    6.67 10.1    2.88
 9     9 栃木県    0.622   25.9    26.8  38.8    21.6 12.4   10.9   7      2.05
10    10 群馬県    0.603   27.6    26.6  42.1    19.3 13.8    5.61 10      2.44
11    11 埼玉県    0.765   24.8    27.7  32.3    20.4 16      7.23 13.9    1.91
12    12 千葉県    0.777   25.9    26.7  37.8    21.7 14.0    5.46 11.3    2.01
13    13 東京都    1.00    22.7    27.4  34.4    19.8 11.4    7.34 14.2    2.82
14    14 神奈川県  0.917   23.9    27.8  34.9    21.5 12.2    7.77 12.5    2.79
15    15 新潟県    0.435   29.9    25.2  43.7    25.2  8.27   4.39  8      3.76
# ℹ 32 more rows
# ℹ 2 more variables: Region2 <dbl>, Region6 <dbl>
  • tail(オブジェクト名)
tail(my_data)
# A tibble: 6 × 13
     ID Pref     Zaisei Over65 Under30 Jimin Minshin Komei Kyosan Ishin Shamin
  <dbl> <chr>     <dbl>  <dbl>   <dbl> <dbl>   <dbl> <dbl>  <dbl> <dbl>  <dbl>
1    42 長崎県    0.316   29.6    25.8  41.7    20.7  16.9   5.12  6.27   3.48
2    43 熊本県    0.387   28.8    27.2  46.5    19.3  15.3   4.53  6.32   2.6 
3    44 大分県    0.358   30.4    25.6  39.4    18.4  13.3   4.42  6.85  13.0 
4    45 宮崎県    0.320   29.5    26.3  40.1    14.5  17.1   5.74  7.27   6.81
5    46 鹿児島県  0.321   29.4    26.0  46.0    16.2  14.5   6.47  6.52   3.62
6    47 沖縄県    0.315   19.6    33.4  27.8    13.3  15.1   7.66 15.6   12.1 
# ℹ 2 more variables: Region2 <dbl>, Region6 <dbl>
  • tail(オブジェクト名, n = 行数)
    • head()で使うと最初n行の出力も可能
tail(my_data, n = 10)
# A tibble: 10 × 13
      ID Pref     Zaisei Over65 Under30 Jimin Minshin Komei Kyosan Ishin Shamin
   <dbl> <chr>     <dbl>  <dbl>   <dbl> <dbl>   <dbl> <dbl>  <dbl> <dbl>  <dbl>
 1    38 愛媛県    0.412   30.6    24.8  43.6    19.3  14.8   6.77  6.97   2.4 
 2    39 高知県    0.245   32.8    23.6  37.0    17.0  15.8   3.93 17.4    2.91
 3    40 福岡県    0.618   25.9    28.2  36.5    19.1  17.2   7.03 10.8    3.33
 4    41 佐賀県    0.329   27.7    28.0  43.5    21.1  15.5   4.85  5.67   4.16
 5    42 長崎県    0.316   29.6    25.8  41.7    20.7  16.9   5.12  6.27   3.48
 6    43 熊本県    0.387   28.8    27.2  46.5    19.3  15.3   4.53  6.32   2.6 
 7    44 大分県    0.358   30.4    25.6  39.4    18.4  13.3   4.42  6.85  13.0 
 8    45 宮崎県    0.320   29.5    26.3  40.1    14.5  17.1   5.74  7.27   6.81
 9    46 鹿児島県  0.321   29.4    26.0  46.0    16.2  14.5   6.47  6.52   3.62
10    47 沖縄県    0.315   19.6    33.4  27.8    13.3  15.1   7.66 15.6   12.1 
# ℹ 2 more variables: Region2 <dbl>, Region6 <dbl>

.csv以外の表形式データ

.csv形式ファイルは表形式データの定番であり、標準

  • 他にも様々な形式のデータがあり、Rで読み込み可能(以下は一部の例)
ソフトウェア名 拡張子 使用パッケージ 関数
Microsoft Excel .xls.xlsx {readxl} read_excle()
LibreOffice / OpenOffice .ods {readODS} read_ods()
SPSS .sav {haven} read_stata()
Stata .dta {haven} read_spss()
SAS .sas7bdat {haven} read_sas()