SlideShare a Scribd company logo
1 of 21
Download to read offline
第3回 R言語勉強会
信州大学 久保琢也
2020年11月13日
データフレームの操作
-Baseパッケージ編-
データフレーム
❖ データフレーム
− 同じ長さの複数のベクトルを1つにまとめたもの
− 見た目はスプレッドシート(エクセルの表みたいな)
大学名
(Character)
総配分額
(Numeric/Integer)
旧帝大
(Logical)
東京大学 10000000000 TRUE
京都大学 5000000000 TRUE
信州大学 1000000000 FALSE
熊本大学 2000000000 FALSE
(仮想データ)
データフレームの操作に関する潮流
Base
dplyr data.table
爆速!
早い!
見やすい!
👉 まずBaseパッケージによるデータフレームの操作を
扱い、次に、dplyrパッケージによるデータフレーム
の操作を詳しく見ていきます
事前の準備をお願いします
❖ KAKENより採択課題情報ダウンロード
− 期間:2018年∼2020年
− 種目:基盤研究(S)
− 形式:CSVファイル
https://kaken.nii.ac.jp
データのインポート
❖ 作業ディレクトリの設定(Rstudio)
− 作業ディレクトリとはデフォルトでデータの読み書きを
行うところ
− Rスクリプトから起動すると、作業ディレクトリは自動
的にそのRスクリプトと同じディレクトリになる
− Rstudioでは右下のパネルから設定(Files → More)
データのインポート
❖ 作業ディレクトリの設定(コード)
− 作業ディレクトリの確認:
− 作業ディレクトリの設定:
# 作業ディレクトリの確認
getwd( )
# 作業ディレクトリの設定例
# Rstudioで変えれば必要ないが、参考まで
# 「 」を忘れない!
setwd( /Users/takuyakubo/Desktop )
getwd( )
setwd( )
データのインポート
❖ データのインポート
− 外部データの読み込みは形式に応じてread.xxx( )
• csvファイルの読み込み:
• txtファイルの読み込み:
# csvファイルの読み込み
d0 <- read.csv( kibanS.csv )
# d0の中身を確認
d0
read.csv( )
read.table( )
データフレームの概要を知る
# 行列数の確認
dim( d0 )
# 列名の確認
names( d0 )
# 各列のデータ構造(列名、データ型等)の確認
str( d0 )
# 最初の6行を確認
head( d0 )
# 全ての列の要約
summary( d0 )
データフレームの要素にアクセス
df[ 行, 列 ]
[ 1, 1 ] [ 1, 2 ] [ 1, 3 ]
[ 2, 1 ] [ 2, 2 ] [ 2, 3 ]
[ 3, 1 ] [ 3, 2 ] [ 3, 3 ]
行
列
列の操作
❖ 特定の列にアクセスする
# インデクスから列にアクセスする(※ベクトル)
d0[ , 16 ]
# 列名から列にアクセスする(※ベクトル)
d0[ , 研究機関 ]
# インデクスから列にアクセスする(※データフレーム)
d0[ , c( 16, 14, 18) ]
# 列名から列にアクセスする(※データフレーム)
d0[ , c( 研究機関 , 審査区分 , 総配分額 ) ]
列の操作
❖ 単独の列にアクセスする
− 単独の列にアクセスするなら「 $ 」を使った方が簡単
− 使い方:df$列名
# インデクスを使った列へのアクセス
d0[ , 16 ]
# 列名を使った列へのアクセス
d0[ , 研究機関 ]
# 「$」と列名を使った列へのアクセス
d0$研究機関
列の操作
❖ 新しい列を作る
− 「 df$新列名 <- 値 」
# 総配分額の100万円単位の列
d0$総配分額_百万 <- d0$総配分額 / 1000000
# 新しい列を確認する
d0[ , c( 総配分額 , 総配分額_百万 ) ]
列の操作
❖ 選択した列だけのデータフレームを作る
# 特定の列だけを選択して新しい変数に代入
d1 <- d0[ , c( 研究機関 , 審査区分 , 総配分額_百万 ) ]
# 中身の確認
d1
データフレームの可視化
❖ DTパッケージによる可視化
# DTパッケージのインストール(※要インターネット環境)
install.packages( DT )
# DTパッケージの呼び出し
library( DT )
# datatable関数による可視化
datatable( d1 )
行の操作
❖ 特定の行にアクセスする
# 3行目にアクセスする
d1[ 3, ]
# 10∼20行にアクセスする
d1[ 10 : 20, ]
# 1∼100行以外にアクセスする
d1[ - ( 1 : 100 ), ]
行の操作
❖ 条件に合致する行にアクセスする
# 総配分額が2億円以上
d1[ d1$総配分額_百万 >= 200, ]
# 研究機関が東京大学
d1[ d1$研究機関 == 東京大学 , ]
行の操作
❖ 条件に合致する行にアクセスする
# 総配分額が2億円以上
subset( d1, 総配分額_百万 >= 200 )
# 研究機関が東京大学
subset( d1, 研究機関 == 東京大学 )
データフレームを集計する
❖ aggregate( )を使った集計
− 書き方は色々あるが、
− aggregate( 集計対象 集計単位, df, 適用する関数 )
# 総配分額の平均を審査区分ごとに集計
aggregate( 総配分額_百万 審査区分 , d1, mean )
# 総配分額の合計を研究機関と審査区分ごとに集計
aggregate( 総配分額_百万 研究機関 + 審査区分, d1, sum )
データフレームを集計する
❖ aggregate( )を使った集計
− 書き方は色々あるが、
− aggregate( 集計対象 集計単位, df, 適用する関数 )
# 新しいデータフレームを作成
d2 <- aggregate( 総配分額_百万 研究機関 + 審査区分, d1, sum )
# datatable関数による可視化
datatable( d2 )
データのエクスポート
❖ データのエクスポート
− 外部データの書き出しは形式に応じてwrite.xxx( )
• csvファイルの読み込み:
• txtファイルの読み込み:
# csvファイルの書き出し
write.csv( d2, kibanS_cleaned.csv , fileEncoding = CP932 )
# write.csv( 出力対象, 出力ファイル名, … )
# 日本語で文字化けしないよう文字コードを指定(fileEncoding)
write.csv( )
write.table( )

More Related Content

Similar to R言語勉強会#3.pdf

サブカルのためのWord2vec
サブカルのためのWord2vecサブカルのためのWord2vec
サブカルのためのWord2vecDeNA
 
データとは何か
データとは何かデータとは何か
データとは何かKenta Suzuki
 
10分で分かるr言語入門ver2.8 14 0712
10分で分かるr言語入門ver2.8 14 0712 10分で分かるr言語入門ver2.8 14 0712
10分で分かるr言語入門ver2.8 14 0712 Nobuaki Oshiro
 
Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編wada, kazumi
 
企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案Toshiyuki Shimono
 
実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案Kamiya Toshihiro
 
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)Masahiro Hayashi
 
Lt ingaoho-jsonb+postgeres fdw
Lt ingaoho-jsonb+postgeres fdwLt ingaoho-jsonb+postgeres fdw
Lt ingaoho-jsonb+postgeres fdwToshi Harada
 
大規模画像認識とその周辺
大規模画像認識とその周辺大規模画像認識とその周辺
大規模画像認識とその周辺n_hidekey
 
10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 101010分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010Nobuaki Oshiro
 
月間10億pvを支えるmongo db
月間10億pvを支えるmongo db月間10億pvを支えるmongo db
月間10億pvを支えるmongo dbYuji Isobe
 
R言語勉強会#8.pdf
R言語勉強会#8.pdfR言語勉強会#8.pdf
R言語勉強会#8.pdfTakuya Kubo
 
Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京tuchimur
 
テーマ別勉強会(R言語)#3.pdf
テーマ別勉強会(R言語)#3.pdfテーマ別勉強会(R言語)#3.pdf
テーマ別勉強会(R言語)#3.pdfTakuya Kubo
 
Washingtondc b20161214 (2/3)
Washingtondc b20161214 (2/3)Washingtondc b20161214 (2/3)
Washingtondc b20161214 (2/3)Toshiyuki Shimono
 
2016年6月版データマエショリスト入門
2016年6月版データマエショリスト入門2016年6月版データマエショリスト入門
2016年6月版データマエショリスト入門Yuya Matsumura
 
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用Nobuaki Oshiro
 
R言語勉強会#10.pdf
R言語勉強会#10.pdfR言語勉強会#10.pdf
R言語勉強会#10.pdfTakuya Kubo
 
#経済学のための実践的データ分析 11. データのビジュアライゼーション
#経済学のための実践的データ分析 11. データのビジュアライゼーション#経済学のための実践的データ分析 11. データのビジュアライゼーション
#経済学のための実践的データ分析 11. データのビジュアライゼーションYasushi Hara
 

Similar to R言語勉強会#3.pdf (20)

サブカルのためのWord2vec
サブカルのためのWord2vecサブカルのためのWord2vec
サブカルのためのWord2vec
 
データとは何か
データとは何かデータとは何か
データとは何か
 
PostgreSQL 9.5 新機能紹介
PostgreSQL 9.5 新機能紹介PostgreSQL 9.5 新機能紹介
PostgreSQL 9.5 新機能紹介
 
10分で分かるr言語入門ver2.8 14 0712
10分で分かるr言語入門ver2.8 14 0712 10分で分かるr言語入門ver2.8 14 0712
10分で分かるr言語入門ver2.8 14 0712
 
Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編
 
企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案
 
実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案
 
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
 
Lt ingaoho-jsonb+postgeres fdw
Lt ingaoho-jsonb+postgeres fdwLt ingaoho-jsonb+postgeres fdw
Lt ingaoho-jsonb+postgeres fdw
 
大規模画像認識とその周辺
大規模画像認識とその周辺大規模画像認識とその周辺
大規模画像認識とその周辺
 
10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 101010分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010
 
月間10億pvを支えるmongo db
月間10億pvを支えるmongo db月間10億pvを支えるmongo db
月間10億pvを支えるmongo db
 
R言語勉強会#8.pdf
R言語勉強会#8.pdfR言語勉強会#8.pdf
R言語勉強会#8.pdf
 
Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京
 
テーマ別勉強会(R言語)#3.pdf
テーマ別勉強会(R言語)#3.pdfテーマ別勉強会(R言語)#3.pdf
テーマ別勉強会(R言語)#3.pdf
 
Washingtondc b20161214 (2/3)
Washingtondc b20161214 (2/3)Washingtondc b20161214 (2/3)
Washingtondc b20161214 (2/3)
 
2016年6月版データマエショリスト入門
2016年6月版データマエショリスト入門2016年6月版データマエショリスト入門
2016年6月版データマエショリスト入門
 
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用
 
R言語勉強会#10.pdf
R言語勉強会#10.pdfR言語勉強会#10.pdf
R言語勉強会#10.pdf
 
#経済学のための実践的データ分析 11. データのビジュアライゼーション
#経済学のための実践的データ分析 11. データのビジュアライゼーション#経済学のための実践的データ分析 11. データのビジュアライゼーション
#経済学のための実践的データ分析 11. データのビジュアライゼーション
 

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言語)#1.pdf
テーマ別勉強会(R言語)#1.pdfテーマ別勉強会(R言語)#1.pdf
テーマ別勉強会(R言語)#1.pdfTakuya Kubo
 
R言語勉強会#9.pdf
R言語勉強会#9.pdfR言語勉強会#9.pdf
R言語勉強会#9.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言語勉強会#2.pdf
R言語勉強会#2.pdfR言語勉強会#2.pdf
R言語勉強会#2.pdfTakuya Kubo
 
R言語勉強会#1.pdf
R言語勉強会#1.pdfR言語勉強会#1.pdf
R言語勉強会#1.pdfTakuya Kubo
 

More from Takuya Kubo (8)

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

R言語勉強会#3.pdf