第II部

第9章 データフレーム

In [2]:
sapply(c("readr", "pipeR", "dplyr", "tidyr", "ggplot2"), require, character.only=TRUE)
Loading required package: pipeR
Loading required package: dplyr

Attaching package: 'dplyr'

The following objects are masked from 'package:stats':

    filter, lag

The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union

Loading required package: tidyr
Loading required package: ggplot2
readr
TRUE
pipeR
TRUE
dplyr
TRUE
tidyr
TRUE
ggplot2
TRUE

9.2 第2章

In [3]:
d <- read_csv("teaching_methods.csv")
d
ID名前性別数学統計心理学テスト統計テスト1統計テスト2指導法
11大村嫌い好き13610C
22本多嫌い好き141013B
33川崎好き好き768B
44多村好き好き121015A
55松中嫌い嫌い1058B
66小久保嫌い嫌い636C
77柴原嫌い嫌い859A
88井手嫌い嫌い15910D
99田上嫌い嫌い437D
1010松田好き嫌い1433D
1111高谷好き好き91118A
1212杉内嫌い好き6614A
1313和田好き好き101118A
1414新垣嫌い嫌い12911C
1515大隣嫌い好き5712B
1616水田好き嫌い1255D
1717斉藤嫌い嫌い887C
1818柳瀬嫌い嫌い8712C
1919佐藤嫌い嫌い1277B
2020馬原嫌い嫌い1597D
In [4]:
d %>>% summarise_each(funs(mean), 6:8)
心理学テスト統計テスト1統計テスト2
110710
In [6]:
d %>>% (scale(.$心理学テスト)) %>>% (~ str(.))
 num [1:20, 1] 0.878 1.17 -0.878 0.585 0 ...
 - attr(*, "scaled:center")= num 10
 - attr(*, "scaled:scale")= num 3.42
0.8776504
1.170201
-0.8776504
0.5851003
0
-1.170201
-0.5851003
1.462751
-1.755301
1.170201
-0.2925501
-1.170201
0
0.5851003
-1.462751
0.5851003
-0.5851003
-0.5851003
0.5851003
1.462751
In [9]:
d %>>% (scale(.$心理学テスト)) %>>% (10 * (.) + 50) %>>% (~ str(.))
 num [1:20, 1] 58.8 61.7 41.2 55.9 50 ...
 - attr(*, "scaled:center")= num 10
 - attr(*, "scaled:scale")= num 3.42
58.7765
61.70201
41.2235
55.851
50
38.29799
44.149
64.62751
32.44699
61.70201
47.0745
38.29799
50
55.851
35.37249
55.851
44.149
44.149
55.851
64.62751

9.3 第3章

In [10]:
options(repr.plot.width = 4, repr.plot.height = 4)
In [16]:
library(Cairo)
In [18]:
Cairo(type = "raster")
d %>>% 
    ggplot(aes(x = `統計テスト1`, y = `統計テスト2`)) + 
    geom_point() + 
    theme(axis.title = element_text(family="IPAexGothic"))
dev.off()
pdf: 2
In [24]:
with(cov(`統計テスト1`, `統計テスト2`), data = d)
7.94736842105263
In [25]:
with(cor(`統計テスト1`, `統計テスト2`), data = d)
0.749658964824245
In [26]:
with(table(数学, 統計), data = d)
      統計
数学   嫌い 好き
  嫌い   10    4
  好き    2    4
In [29]:
with(cor(as.integer(数学), as.integer(統計)), data = d)
Warning message:
In is.data.frame(y): NAs introduced by coercionWarning message:
In is.data.frame(x): NAs introduced by coercion
[1] NA
In [30]:
str(d)
Classes 'tbl_df', 'tbl' and 'data.frame':	20 obs. of  9 variables:
 $ ID          : int  1 2 3 4 5 6 7 8 9 10 ...
 $ 名前        : chr  "大村" "本多" "川崎" "多村" ...
 $ 性別        : chr  "男" "男" "男" "男" ...
 $ 数学        : chr  "嫌い" "嫌い" "好き" "好き" ...
 $ 統計        : chr  "好き" "好き" "好き" "好き" ...
 $ 心理学テスト: int  13 14 7 12 10 6 8 15 4 14 ...
 $ 統計テスト1 : int  6 10 6 10 5 3 5 9 3 3 ...
 $ 統計テスト2 : int  10 13 8 15 8 6 9 10 7 3 ...
 $ 指導法      : chr  "C" "B" "B" "A" ...
In [46]:
d %>>% mutate_each(funs(as.factor), 数学:統計) %>>% str
Classes 'tbl_df', 'tbl' and 'data.frame':	20 obs. of  9 variables:
 $ ID          : int  1 2 3 4 5 6 7 8 9 10 ...
 $ 名前        : chr  "大村" "本多" "川崎" "多村" ...
 $ 性別        : chr  "男" "男" "男" "男" ...
 $ 数学        : Factor w/ 2 levels "嫌い","好き": 1 1 2 2 1 1 1 1 1 2 ...
 $ 統計        : Factor w/ 2 levels "嫌い","好き": 2 2 2 2 1 1 1 1 1 1 ...
 $ 心理学テスト: int  13 14 7 12 10 6 8 15 4 14 ...
 $ 統計テスト1 : int  6 10 6 10 5 3 5 9 3 3 ...
 $ 統計テスト2 : int  10 13 8 15 8 6 9 10 7 3 ...
 $ 指導法      : chr  "C" "B" "B" "A" ...
In [45]:
d %>>% 
    mutate_each(funs(as.factor), 数学:統計) %>>% 
    mutate_each(funs(as.integer), 数学:統計) %>>% 
    with(cor(数学, 統計))
0.356348322549899