効率的なデータ操作とは?
すべて名前を指定して実行する
データを関数で操作
TERM POS1 POS2 文書1 文書2 文書3
1 、 記号 読点 2 5 3
2 。 記号 句点 2 2 2
3 ある 動詞 自立 0 0 2
4 いく 動詞 非自立 0 1 0
5 いる 動詞 非自立 1 1 0
6 う 助動詞 * 0 1 0
TERM | POS | FREQ |
---|---|---|
企業 | 名詞 | 2 |
伝える | 動詞 | 3 |
高い | 形容詞 | 4 |
特定の列(変数)の指定 : $
[1] "、" "。" "ある" "いく" "いる" "う"
[7] "か" "が" "くる" "こと" "これ" "する"
[13] "その道" "た" "たとえる" "だ" "だけ" "つける"
[19] "づくり" "て"
添字( [行の指定 , 列の指定] )を駆使
TERM POS1 POS2 文書1 文書2 文書3
81 理工 名詞 一般 1 0 2
各テキストでの出現回数を合算すると5を超える単語
TERM POS1 POS2 文書1 文書2 文書3
1 、 記号 読点 2 5 3
2 。 記号 句点 2 2 2
31 の 助詞 連体化 3 5 1
32 は 助詞 係助詞 2 4 2
39 を 助詞 格助詞 2 3 5
91 者 名詞 接尾 1 5 2
各テキストでの出現回数を合算した列
TERM 文書1 文書2 文書3 合計
1 、 2 5 3 10
2 。 2 2 2 6
3 ある 0 0 2 2
4 いく 0 1 0 1
5 いる 1 1 0 2
6 う 0 1 0 1
合計頻度列を標準化
TERM 文書1 文書2 文書3 標準化
1 、 2 5 3 4.14854297
2 。 2 2 2 2.08459124
3 ある 0 0 2 0.02063952
4 いく 0 1 0 -0.49534841
5 いる 1 1 0 0.02063952
6 う 0 1 0 -0.49534841
Hadley Wickham
messy data
TERM POS1 文書1 文書2 文書3
1 、 記号 2 5 3
2 。 記号 2 2 2
3 ある 動詞 0 0 2
4 いく 動詞 0 1 0
5 いる 動詞 1 1 0
6 う 助動詞 0 1 0
tidy data
# A tibble: 300 x 4
TERM POS1 Doc FREQ
<chr> <chr> <chr> <int>
1 、 記号 文書1 2
2 。 記号 文書1 2
3 ある 動詞 文書1 0
4 いく 動詞 文書1 0
5 いる 動詞 文書1 1
6 う 助動詞 文書1 0
7 か 助詞 文書1 0
8 が 助詞 文書1 0
9 くる 動詞 文書1 0
10 こと 名詞 文書1 1
# … with 290 more rows
data.frameの拡張
# A tibble: 5 x 3
Name X Y
<chr> <int> <dbl>
1 A 1 1
2 B 2 4
3 C 3 9
4 D 4 16
5 E 5 25
%>%
https://www.rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf
Name列がBのレコードのYの最大値
[1] 4
一時ファイルを作成しない方法
[1] 4
tidyverse流: filterとselectで抽出
[1] 4
select(列)
# A tibble: 5 x 2
Name Y
<chr> <dbl>
1 E 25
2 D 16
3 C 9
4 B 4
5 A 1
[1] 3
[1] NA
[1] 3
# A tibble: 3 x 3
Name X Y
<chr> <int> <dbl>
1 C 3 9
2 D 4 16
3 E 5 25
# A tibble: 5 x 3
Name X Y
<chr> <int> <dbl>
1 A 1 0
2 B 2 1.39
3 C 3 2.20
4 D 4 2.77
5 E 5 3.22
Y X1 X2
1 A 2 3
2 A 3 4
3 B 4 5
4 B 5 6
5 C 6 7
6 C 7 8
数値列だけ対数化
Y X1 X2
1 A 0.6931472 1.098612
2 A 1.0986123 1.386294
3 B 1.3862944 1.609438
4 B 1.6094379 1.791759
5 C 1.7917595 1.945910
6 C 1.9459101 2.079442
X1_mean X1_sd
1 4.5 1.870829
数値列だけ平均を求める
X1 X2
1 4.5 5.5
平均と分散
X1_fn1 X2_fn1 X1_fn2 X2_fn2
1 4.5 5.5 3.5 3.5
出力の列名を調整
X1_mean X2_mean X1_sd X2_sd
1 4.5 5.5 1.870829 1.870829
# A tibble: 8 x 4
Name Time1 Time2 Time3
<chr> <dbl> <dbl> <dbl>
1 A 0.1 0.18 0.11
2 B 0.3 0.33 0.35
3 C 0.2 0.22 0.26
4 D 0.44 0.47 0.43
5 E 0.51 0.56 0.55
6 F 0.6 0.66 0.68
7 G 0.77 0.78 0.72
8 H 0.81 0.88 0.86
# A tibble: 24 x 3
Name time score
<chr> <chr> <dbl>
1 A Time1 0.1
2 B Time1 0.3
3 C Time1 0.2
4 D Time1 0.44
5 E Time1 0.51
6 F Time1 0.6
7 G Time1 0.77
8 H Time1 0.81
9 A Time2 0.18
10 B Time2 0.33
# … with 14 more rows
TERM POS1 POS2 文書1 文書2 文書3
1 、 記号 読点 2 5 3
2 。 記号 句点 2 2 2
3 ある 動詞 自立 0 0 2
4 いく 動詞 非自立 0 1 0
5 いる 動詞 非自立 1 1 0
6 う 助動詞 * 0 1 0
TERM POS1 POS2 Doc FREQ
1 。 記号 句点 文書1 2
2 。 記号 句点 文書2 2
3 。 記号 句点 文書3 2
たくさんのExcelファイルを採点
作業ファイルを、学生番号で原簿ファイルと結合
提出ファイルXLConnectで読み込み
stringrパッケージ, stringiパッケージ
学生番号 <- stri_trans_nfkc_casefold(
"1018051458石田基広.xlsx") %>%
str_extract(
"\\d{8,10}\\p{Han}*.xlsx$")
[1] "1018051458石田基広.xlsx"
式を取得
if_else()
: 正答ならば1さもなければ0
A11は38点、B11は36、C11は26点
left_join(()
left_join
単語頻度表からストップワード削除
# A tibble: 2 x 1
TERM
<chr>
1 、
2 。
TERM POS1 POS2 文書1 文書2 文書3 合計 標準化
1 ある 動詞 自立 0 0 2 2 0.02063952
2 いく 動詞 非自立 0 1 0 1 -0.49534841
3 いる 動詞 非自立 1 1 0 2 0.02063952
4 う 助動詞 * 0 1 0 1 -0.49534841
5 か 助詞 副助詞/並立助詞/終助詞 0 1 1 2 0.02063952
6 が 助詞 格助詞 0 0 3 3 0.53662745
Macでは必須
横型はNG
# A tibble: 142 x 14
country continent `1952` `1957` `1962` `1967` `1972` `1977` `1982`
<fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Afghan… Asia 28.8 30.3 32.0 34.0 36.1 38.4 39.9
2 Albania Europe 55.2 59.3 64.8 66.2 67.7 68.9 70.4
3 Algeria Africa 43.1 45.7 48.3 51.4 54.5 58.0 61.4
4 Angola Africa 30.0 32.0 34 36.0 37.9 39.5 39.9
5 Argent… Americas 62.5 64.4 65.1 65.6 67.1 68.5 69.9
6 Austra… Oceania 69.1 70.3 70.9 71.1 71.9 73.5 74.7
7 Austria Europe 66.8 67.5 69.5 70.1 70.6 72.2 73.2
8 Bahrain Asia 50.9 53.8 56.9 59.9 63.3 65.6 69.1
9 Bangla… Asia 37.5 39.3 41.2 43.5 45.3 46.9 50.0
10 Belgium Europe 68 69.2 70.2 70.9 71.4 72.8 73.9
# … with 132 more rows, and 5 more variables: `1987` <dbl>, `1992` <dbl>,
# `1997` <dbl>, `2002` <dbl>, `2007` <dbl>
(簡単のため国を3つに絞る)
データセットをggplot2に指定
データと軸やカラーを対応させる
ggplot() + aes(…) == ggplot( aes (…) )
aes で水準ごとの指定
色を指定
geom_bar
geom_point
geom_line
geom_boxplot
各年の個人GDP平均
# A tibble: 12 x 2
year AVG
<int> <dbl>
1 1952 1549.
2 1957 2127.
3 1962 2867.
4 1967 4163.
5 1972 6162.
6 1977 7336.
7 1982 8656.
8 1987 10763.
9 1992 13528.
10 1997 15700.
11 2002 16986.
12 2007 19988.
stat = “summary”
もし集計済みデータだった場合
# A tibble: 12 x 2
year AVG
<int> <dbl>
1 1952 1549.
2 1957 2127.
3 1962 2867.
4 1967 4163.
5 1972 6162.
6 1977 7336.
7 1982 8656.
8 1987 10763.
9 1992 13528.
10 1997 15700.
11 2002 16986.
12 2007 19988.
stat =“identity”
エラーバー
中国人口
bins
, binwidth
..density..
facet_grid
, facet_wrap
facet_grid(行[縦軸] ~ 列[横軸])
facet_wrap(~ 変数)
gridと wrapの違い
背景を消したい theme_*
theme_bw() theme_light() theme_minimal()