SlideShare a Scribd company logo
1 of 50
Download to read offline
第1回 R言語勉強会
横浜国立大学 研究推進機構
特任教員(講師)/ URA
久保琢也
2021年11月16日
自己紹介
自己紹介:経歴
【氏名】久保 琢也
【所属】横浜国立大学 研究推進機構
【職位】特任教員(講師)/ URA
【学位】博士(学術): 心理言語学 ⇨ 文系も文系
【職歴】
・2016年5月∼2019年3月 広島大学 URA
・2019年4月∼2021年7月 信州大学 URA
・2021年8月∼ 現在 横浜国立大学 URA
自己紹介:プログラミング経験
❖大学院時代
• 実験データの統計解析のためにRの勉強を始める。
• 研究室で勉強会(読書会)などを主催
❖URAになってから
• 広島:Rを用いたデータ分析を独習(Courseraや
Bootcamp)
• 信州:IR担当として業務でRを利用。飛躍的にスキルが
向上。Webアプリ開発を始める
• 横国:業務でRは使っていないが、Webアプリ開発は継
続中。プログラミングの知識は研究支援のための
アプリ開発(office365)に生かされている。
勉強会について
勉強会の狙い
この勉強会では研究力分析で行うようなデー
タの集計やグラフの描画をRで実行する方法を
勉強していきます。
3回の勉強会では基本的な内容しか扱えませ
んが、これから継続してRを勉強していくため
の1つの足掛かりとなることを目指します。
勉強会のスケジュールと内容
日程 内容
第1回 11月16日(火)13:00∼14:30
11月30日(火)14:00∼15:30
(フォローアップ)
Rの基礎
第2回 12月14日(火)13:00∼14:30
12月21日(火)14:00∼15:30
(フォローアップ)
データの
操作・集計
第3回 1月11日(火)13:00∼14:30
1月18日(火)14:00∼15:30
(フォローアップ)
グラフの描画
勉強する際の心得(私見)
「できること」を理解する
− コードそのものは暗記しなくても良い
− 具体的な方法はネットでいくらでも見つかる
細かいことは気にしない
− やりたいことを実現する方法は無数にある。
− 不恰好でも、まずは正しい結果が出れば良い。
分からないことは人に聞くのが早い
− 自分の疑問はみんなの疑問
− C4RAはSlackでのコミュニケーション基盤がある!
R言語について
R言語について:概要
❖ R言語とは
− データ解析や統計分析、グラフィックスに強みを有する
プログラミング言語
− オークランド大学のRoss IhakaとRobert Gentleman
により開発
− 現在ではR Development Core Teamによりメンテナン
スと拡張がなされている
− オープンソースで無償
R言語について:人気ランク
https://www.tiobe.com/tiobe-index/
R言語について:機能性
❖ R言語 + Rstudioでできること
− データ分析/統計解析
− 美しいグラフィック
− 機械学習/深層学習
− 自然言語処理
− ウェブスクレイピング
− レポーティング(PPT, Word, PDF, HTML)
− etc.
ウェブアプリ
ウェブサイト
R言語について:パッケージ
❖ 豊富なパッケージ(ライブラリ)
− 特定の目的のために開発された関数(機能)やデータセッ
トの集まり
− パッケージに頼らなくてもある程度のことはできるが、
パッケージを使った方が格段に便利
− Rやパッケージのver.によって動作しないことがある
(それぞれ古いver.に戻すことも可能)
グラフ描画
パッケージ
データ操作
パッケージ
文字列操作
パッケージ
機械学習
パッケージ
Baseパッケージ
Rの実行環境
Rstudioの使い方
Rstudioの使い方
とりあえずRスクリプトを開く
Rstudioの使い方
スクリプト(下書き)
コンソール(実行) フォルダ、可視化、Help等
環境(変数、関数)等
Rstudioの使い方
① コードを書く
② 実行したいコードで
(Win) control + Enter
(Mac)command + Enter
自動的にコンソールで実行される
Rstudioの使い方
コンソールが「>」(プロンプト)のときに
新しいコードを実行可能
「+」はコードが終わっていないことを示す
⇨ 続きを書く or 中断する(Escape)
※コンソール
演算子
算術演算子
# 足し算
1 + 1
# 引き算
5 - 2
# 掛け算
3 * 6
# 割り算
12 / 4
# 累乗
2 ^ 10
比較演算子 ⇨ TRUE/FALSE
# 「等しい」かどうかを判定
1 == 1
# 「等しくない」かどうか判定
5 != 2
# 「左辺が右辺よりも大きい」かどうか判定
3 > 6
# 「右辺が左辺よりも大きい」かどうか判定
1 < 4
# 「左辺が右辺以上」かどうか判定
5 >= 8
# 「右辺が左辺以上」かどうか判定
1 <= 4
変数(Variable)
変数とは
何らかの値を入れておく
箱のようなもの
変数
値
変数の作り方
− 変数名は文字(大文字、小文字は区別)、数字、アンダーラ
イン、ドットを使う
− 変数名に日本語を使ってもいいが個人的に非推奨
# 変数 x に2を代入
x <- 2
# 変数 y に3を代入
y <- 3
変数名 <- 値
# 変数 x の中身を確認
x
# 変数 y の中身を確認
y
変数を使った計算
# 変数 x と 5 の和
x + 5
# 変数 x と変数 y の和
x + y
# 変数 x と変数 y の積を変数 z に代入
z <- x + y
# 変数 z の中身を確認
z
変数の値を変えるには
− 変数を使って計算しただけでは変数の中身は変わらない
− 既にある変数の値を変えるには「 <- 」で値を上書きする
変数名 <- 値
# x の値を確認
x
# x と 5 の和を計算
x + 5
# x の値は?
x
# x の値を確認
x
# x と 5 の和を計算し、x に代入
x <- x + 5
# x の値は?
x
関数(Function)
関数とは
関数
値(引数)
値(戻り値)
与えられた値に対して何らかの
処理を行ってくれるやつ
− 引数の数は関数によって異なる(※引数がない関数もある)
− 引数に変数を与えることもできる
関数の形
関数名 (引数1, 引数2, …)
# 平方根を返す関数
sqrt( 9 )
# 常用対数を返す関数
log10( 100 )
# 絶対値を返す関数
abs( -5 )
# 平方根を返す関数
sqrt( x )
# 常用対数を返す関数
log10( y )
# 絶対値を返す関数
abs( -z )
関数の使い方がわからない時は
sum( )の使い方を調べたい
⇨ help( sum )
help (関数名)
ベクトル(Vector)
ベクトルとは
ベクトル?
ベクトルとは
ベクトル
同じ型の値を複数個まとめたもの
⇨ 複数の値をまとめて計算できる!
ベクトルの作り方
# 数値型ベクトルを作る
num <- c( 100, 300, 500, 700, 900, 1100 )
# 文字型ベクトルを作る(※文字は で囲む)
univ <- c( A , B , C , D , E , F )
# 論理型ベクトルを作る
natl <- c( T, T, T, F, F, F ) # T = TRUE, F = FALSE
c (値1, 値2, …)
※ c: concatenate
ベクトルを使った計算
❖ 関数を使った計算(数値型ベクトル)
# numの要素の数を取得
length( num )
# numの合計を計算
sum( num )
# numの平均値を計算
mean( num )
# numの最小値を計算
min( num )
# numの最大値を計算
max( num )
ベクトルを使った計算
❖ 関数を使った計算(文字型ベクトル)
# 小文字に変換
tolower( univ )
# 大文字に変換
toupper( univ )
# 文字数の取得
nchar( univ )
# univ の 各値に 大学 を結合
paste0( univ, 大学 )
ベクトルを使った計算
❖ 関数を使った計算(論理型ベクトル)
# 全ての要素が TRUE かどうか
all( natl )
# TRUEが含まれるかどうか
any( natl )
# TRUEの個数
sum( natl ) # TRUEは 1 , FALSEは 0
ベクトルの各要素を取り出す
# 2番目の要素にアクセス
num[ 2 ]
# 3番目から5番目の要素にアクセス
num[ c( 3, 4, 5 ) ]
num[ 3 : 5 ]
# 3番目から5番目以外の要素にアクセス
num[ - c( 3, 4, 5 ) ]
num[ - ( 3 : 5 ) ]
num
Index ① ② ③ ④ ⑤ ⑥
値 100 300 500 700 900 1100
ベクトルの各要素を書き換える
# 1番目の要素に 900 を代入
num[ 1 ] <- 900
# 2番目、3番目の要素に 600 を代入
num[ c( 2, 3 ) ] <- 600
# 4番目、5番目、6番目の要素に 750, 850, 1000 を代入
num[ 4 : 6 ] <- c( 750, 850, 1000 )
# numの中身を確認
num
num
Index ① ② ③ ④ ⑤ ⑥
値 100 300 500 700 900 1100
データフレーム
(Data Frame)
データフレームとは
大学名 国立大学
研究費
(百万円)
A大学 T 900
B大学 T 600
C大学 T 600
D大学 F 750
E大学 F 850
F大学 F 1000
これです
データフレームの特徴
大学名 国立大学
研究費
(百万円)
A大学 T 900
B大学 T 600
C大学 T 600
D大学 F 750
E大学 F 850
F大学 F 1000
文字型ベクトル 論理型ベクトル 数値型ベクトル
− 2次元(行、列)のデータ構造
− 複数のベクトルを列としてまとめたもの
− 各列でデータの個数は同じ
データフレームの作り方
− デフォルトでベクトルを入れた変数名が列名となる
− 「列名 = ベクトル」とすると、列名も指定可能
# 変数 univ, natl, num からデータフレームを作成
df <- data.frame( univ, natl, money = num )
# dfを確認
df
data.frame (ベクトル1, ベクトル2, …)
データフレームを引数に取る関数
# 列名を取得する
names( df )
# 行数と列数を取得する
dim( df )
# データの構造を取得する
str( df )
# 各列のサマリーを取得する
summary( df )
データフレームの要素にアクセス
df[ 行, 列 ]
[ 1, 1 ] [ 1, 2 ] [ 1, 3 ]
[ 2, 1 ] [ 2, 2 ] [ 2, 3 ]
[ 3, 1 ] [ 3, 2 ] [ 3, 3 ]
行
列
特定の列だけ取り出す
# インデクスから列を取り出す
df[ , 2 ]
# インデクスから複数の列を取り出す
df[ , c( 1, 3 ) ]
# 列名から列を取り出す
df[ , natl ]
# 列名から複数の列を取り出す
df[ , c( univ , money ) ]
特定の列だけ取り出す
❖ 「 df $ 列名 」で1つの列を取り出せる
# univ列を取り出す
df$univ
# natl列を取り出す
df$natl
# money列の合計を取得
sum( df$money )
特定の行だけ取り出す
# 3行目を取り出す
df[ 3, ]
# 3∼5行目を取り出す
df[ 3 : 5, ]
# 4行目以外を取り出す
df[ - 4, ]
最後に:勉強する際の心得(再掲)
「できること」を理解する
− コードそのものは暗記しなくても良い
− 具体的な方法はネットでいくらでも見つかる
細かいことは気にしない
− やりたいことを実現する方法は無数にある。
− 不恰好でも、まずは正しい結果が出れば良い。
分からないことは人に聞くのが早い
− 自分の疑問はみんなの疑問
− C4RAはSlackでのコミュニケーション基盤がある!
終わり

More Related Content

Similar to テーマ別勉強会(R言語)#1.pdf

できるプログラマーを本気で育てるSwift超入門iosプログラマーへの第一歩
できるプログラマーを本気で育てるSwift超入門iosプログラマーへの第一歩できるプログラマーを本気で育てるSwift超入門iosプログラマーへの第一歩
できるプログラマーを本気で育てるSwift超入門iosプログラマーへの第一歩technologicarts
 
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーションサイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーションsn_monochr
 
ラボユース 最終成果報告会
ラボユース 最終成果報告会ラボユース 最終成果報告会
ラボユース 最終成果報告会shiftky
 
機械学習を民主化する取り組み
機械学習を民主化する取り組み機械学習を民主化する取り組み
機械学習を民主化する取り組みYoshitaka Ushiku
 
言語処理系入門3
言語処理系入門3言語処理系入門3
言語処理系入門3Kenta Hattori
 
R言語勉強会#3.pdf
R言語勉強会#3.pdfR言語勉強会#3.pdf
R言語勉強会#3.pdfTakuya Kubo
 
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 090510分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 0905Nobuaki Oshiro
 

Similar to テーマ別勉強会(R言語)#1.pdf (9)

LDA入門
LDA入門LDA入門
LDA入門
 
mori m
mori mmori m
mori m
 
できるプログラマーを本気で育てるSwift超入門iosプログラマーへの第一歩
できるプログラマーを本気で育てるSwift超入門iosプログラマーへの第一歩できるプログラマーを本気で育てるSwift超入門iosプログラマーへの第一歩
できるプログラマーを本気で育てるSwift超入門iosプログラマーへの第一歩
 
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーションサイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
 
ラボユース 最終成果報告会
ラボユース 最終成果報告会ラボユース 最終成果報告会
ラボユース 最終成果報告会
 
機械学習を民主化する取り組み
機械学習を民主化する取り組み機械学習を民主化する取り組み
機械学習を民主化する取り組み
 
言語処理系入門3
言語処理系入門3言語処理系入門3
言語処理系入門3
 
R言語勉強会#3.pdf
R言語勉強会#3.pdfR言語勉強会#3.pdf
R言語勉強会#3.pdf
 
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 090510分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 0905
 

More from Takuya Kubo

R言語勉強会#0.pdf
R言語勉強会#0.pdfR言語勉強会#0.pdf
R言語勉強会#0.pdfTakuya Kubo
 
テーマ別勉強会(R言語)#4.pdf
テーマ別勉強会(R言語)#4.pdfテーマ別勉強会(R言語)#4.pdf
テーマ別勉強会(R言語)#4.pdfTakuya Kubo
 
テーマ別勉強会(R言語)#3.pdf
テーマ別勉強会(R言語)#3.pdfテーマ別勉強会(R言語)#3.pdf
テーマ別勉強会(R言語)#3.pdfTakuya Kubo
 
テーマ別勉強会(R言語)#2.pdf
テーマ別勉強会(R言語)#2.pdfテーマ別勉強会(R言語)#2.pdf
テーマ別勉強会(R言語)#2.pdfTakuya Kubo
 
R言語勉強会#10.pdf
R言語勉強会#10.pdfR言語勉強会#10.pdf
R言語勉強会#10.pdfTakuya Kubo
 
R言語勉強会#9.pdf
R言語勉強会#9.pdfR言語勉強会#9.pdf
R言語勉強会#9.pdfTakuya Kubo
 
R言語勉強会#8.pdf
R言語勉強会#8.pdfR言語勉強会#8.pdf
R言語勉強会#8.pdfTakuya Kubo
 
R言語勉強会#7.pdf
R言語勉強会#7.pdfR言語勉強会#7.pdf
R言語勉強会#7.pdfTakuya Kubo
 
R言語勉強会#6.pdf
R言語勉強会#6.pdfR言語勉強会#6.pdf
R言語勉強会#6.pdfTakuya Kubo
 
R言語勉強会#5.pdf
R言語勉強会#5.pdfR言語勉強会#5.pdf
R言語勉強会#5.pdfTakuya Kubo
 
R言語勉強会#4.pdf
R言語勉強会#4.pdfR言語勉強会#4.pdf
R言語勉強会#4.pdfTakuya Kubo
 
R言語勉強会#1.pdf
R言語勉強会#1.pdfR言語勉強会#1.pdf
R言語勉強会#1.pdfTakuya Kubo
 

More from Takuya Kubo (12)

R言語勉強会#0.pdf
R言語勉強会#0.pdfR言語勉強会#0.pdf
R言語勉強会#0.pdf
 
テーマ別勉強会(R言語)#4.pdf
テーマ別勉強会(R言語)#4.pdfテーマ別勉強会(R言語)#4.pdf
テーマ別勉強会(R言語)#4.pdf
 
テーマ別勉強会(R言語)#3.pdf
テーマ別勉強会(R言語)#3.pdfテーマ別勉強会(R言語)#3.pdf
テーマ別勉強会(R言語)#3.pdf
 
テーマ別勉強会(R言語)#2.pdf
テーマ別勉強会(R言語)#2.pdfテーマ別勉強会(R言語)#2.pdf
テーマ別勉強会(R言語)#2.pdf
 
R言語勉強会#10.pdf
R言語勉強会#10.pdfR言語勉強会#10.pdf
R言語勉強会#10.pdf
 
R言語勉強会#9.pdf
R言語勉強会#9.pdfR言語勉強会#9.pdf
R言語勉強会#9.pdf
 
R言語勉強会#8.pdf
R言語勉強会#8.pdfR言語勉強会#8.pdf
R言語勉強会#8.pdf
 
R言語勉強会#7.pdf
R言語勉強会#7.pdfR言語勉強会#7.pdf
R言語勉強会#7.pdf
 
R言語勉強会#6.pdf
R言語勉強会#6.pdfR言語勉強会#6.pdf
R言語勉強会#6.pdf
 
R言語勉強会#5.pdf
R言語勉強会#5.pdfR言語勉強会#5.pdf
R言語勉強会#5.pdf
 
R言語勉強会#4.pdf
R言語勉強会#4.pdfR言語勉強会#4.pdf
R言語勉強会#4.pdf
 
R言語勉強会#1.pdf
R言語勉強会#1.pdfR言語勉強会#1.pdf
R言語勉強会#1.pdf
 

テーマ別勉強会(R言語)#1.pdf