Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
因子型を使いこなそう@fukuoka.R#09
Search
nonki1974
September 09, 2017
Technology
0
240
因子型を使いこなそう@fukuoka.R#09
fukuoka.R #09 (2017/09/09) の発表資料
nonki1974
September 09, 2017
Tweet
Share
More Decks by nonki1974
See All by nonki1974
GTFS with Tidytransit package
nonki1974
0
330
TokyoR#84_Rexams
nonki1974
0
210
都道府県別焼き鳥屋ランキングの作成
nonki1974
1
910
Introduction to R
nonki1974
0
370
Introduction to dplyr
nonki1974
0
540
Introduction to ggplot2
nonki1974
1
520
Analyzing PSB tracks with R
nonki1974
0
600
introduction to fukuoka.R @ Fukuoka.LT
nonki1974
0
74
所要時間のヒートマップを作成する
nonki1974
0
580
Other Decks in Technology
See All in Technology
Kaggleの経験が実務にどう活きているか / kaggle_findy
sansan_randd
7
1.4k
クラウド × シリコンの Mashup - AWS チップ開発で広がる AI 基盤の選択肢
htokoyo
2
180
類似画像検索モデルの開発ノウハウ
lycorptech_jp
PRO
5
1.1k
マルチアカウント環境でSecurity Hubの運用!導入の苦労とポイント / JAWS DAYS 2026
genda
0
450
白金鉱業Meetup_Vol.22_Orbital Senseを支える衛星画像のマルチモーダルエンベディングと地理空間のあいまい検索技術
brainpadpr
2
290
新職業『オーケストレーター』誕生 — エージェント10体を同時に回すAgentOps
gunta
4
1.8k
最強のAIエージェントを諦めたら品質が上がった話 / how quality improved after giving up on the strongest AI agent
kt2mikan
0
150
聲の形にみるアクセシビリティ
tomokusaba
0
170
JAWS FESTA 2025でリリースしたほぼリアルタイム文字起こし/翻訳機能の構成について
naoki8408
1
300
元エンジニアPdM、IDEが恋しすぎてCursorに全業務を集約したら、スライド作成まで爆速になった話
doiko123
1
590
S3はフラットである –AWS公式SDKにも存在した、 署名付きURLにおけるパストラバーサル脆弱性– / JAWS DAYS 2026
flatt_security
0
1.7k
DevOpsエージェントで実現する!! AWS Well-Architected(W-A) を実現するシステム設計 / 20260307 Masaki Okuda
shift_evolve
PRO
3
550
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
840
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
150
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
Odyssey Design
rkendrick25
PRO
2
540
Faster Mobile Websites
deanohume
310
31k
Code Review Best Practice
trishagee
74
20k
GraphQLとの向き合い方2022年版
quramy
50
14k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
69
How to Talk to Developers About Accessibility
jct
2
150
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
300
Transcript
因子型を使いこなそう! @nonki1974 2017/09/09 fukuoka.R#09
データ型 データ構造 データ型 ベクトル 行列・配列 リスト データフレーム 整数型 実数型 論理型
文字列 因子型
データの種類(尺度水準) 名義尺度 順序尺度 間隔尺度 比例尺度 同じものには同じ値(記号) 異なるものには異なる値(記号) 名義尺度+順序関係 値の間隔(差)に意味がある 10℃
→ 30℃ 20℃上昇した! 温度が3倍になった! 間隔尺度+値の比に意味がある
変数の種類 質的変数 名義尺度 順序尺度 量的変数 間隔尺度 比例尺度
変数の種類 質的変数 名義尺度 順序尺度 量的変数 間隔尺度 比例尺度 因子型
とりあえず文字型 > bloodtype <- c("B","A","A","A","AB", + "B","AB","A","A","A","C") > bloodtype [1]
"B" "A" "A" "A" "AB" "B" "AB" [8] "A" "A" "A" "C" > table(bloodtype) bloodtype A AB B C 6 2 2 1
因子型に変換 | factor()関数 > bloodtype.f <- factor(bloodtype, + levels =
c("A","B","O","AB")) > bloodtype.f [1] B A A A AB B AB [8] A A A <NA> Levels: A B O AB > table(bloodtype.f) bloodtype.f A B O AB 6 2 0 2 > table(addNA(bloodtype.f)) A B O AB <NA> 6 2 0 2 1 カテゴリ(水準)を ベクトルで指定 カテゴリに一致しない データは<NA>に <NA>もカテゴリ として扱う
因子型の中身 整数型ベクトル 水準ベクトル > str(bloodtype.f) Factor w/ 4 levels "A","B","O","AB":
2 1 1 1 4 2 4 1 1 1 ... > # 整数型に変換 > as.numeric(bloodtype.f) [1] 2 1 1 1 4 2 4 1 1 1 NA > # 対応する水準ベクトルの文字に変換 > as.character(bloodtype.f) [1] "B" "A" "A" "A" "AB" "B" "AB" [8] "A" "A" "A" NA
データフレーム > pokemon <- read.csv("pokemon.csv") > head(pokemon$type1) [1] くさ みず
むし むし ノーマル [6] ノーマル 15 Levels: あく いわ エスパー かくとう ... むし 文字列を含んだ列は因子型として読み込まれる
文字型として読み込みたい | stringsAsFactors > pokemon2 <- read.csv("pokemon.csv", + stringsAsFactors =
FALSE) > head(pokemon2$type1) [1] "くさ" "みず" "むし" "むし" [5] "ノーマル" "ノーマル" 文字列処理をしたい場合とか。
集計と棒グラフ > table(pokemon$sex) オス なし メス 45 4 23 >
barplot(table(pokemon$sex)) オス なし メス 0 10 20 30 40
水準の順序を変更 > pokemon$sex <- factor(pokemon$sex, + levels = c("オス", "メス",
"なし")) > head(pokemon$sex) [1] オス オス オス メス オス オス Levels: オス メス なし > barplot(table(pokemon$sex)) オス メス なし 0 10 20 30 40
カテゴリごとの箱ひげ図 > boxplot(weight~type1, data=pokemon)
水準ごとの統計量で水準を並べ替え > pokemon$type1 <- reorder(pokemon$type1, + pokemon$weight, + function(x){-median(x)}) >
boxplot(weight~type1, data=pokemon) Type1ごとの weightの中央値の 降順に水準を並び替え
因子型の扱い 結構めんどくさい
そこで
forcats package > # パッケージのインストール > install.packages("forcats") > # パッケージのロード
> library(forcats) > pokemon <- read.csv("pokemon.csv") > boxplot(weight~fct_reorder(type1,weight,median,.desc=T), + data=pokemon)
例えば fct_lump() > # 頻出4水準のみ残して、後はOtherにする > boxplot(weight~fct_lump(pokemon$type1, 4), data=pokemon)
詳細は forcats kazutan
enjoy!