Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
因子型を使いこなそう@fukuoka.R#09
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
nonki1974
September 09, 2017
Technology
250
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
因子型を使いこなそう@fukuoka.R#09
fukuoka.R #09 (2017/09/09) の発表資料
nonki1974
September 09, 2017
More Decks by nonki1974
See All by nonki1974
GTFS with Tidytransit package
nonki1974
0
350
TokyoR#84_Rexams
nonki1974
0
240
都道府県別焼き鳥屋ランキングの作成
nonki1974
1
940
Introduction to R
nonki1974
0
400
Introduction to dplyr
nonki1974
0
570
Introduction to ggplot2
nonki1974
1
560
Analyzing PSB tracks with R
nonki1974
0
640
introduction to fukuoka.R @ Fukuoka.LT
nonki1974
0
85
所要時間のヒートマップを作成する
nonki1974
0
620
Other Decks in Technology
See All in Technology
SAENM ~Jupyterで残すPoCの試行錯誤、未来の自分と仲間を助ける記録!~
terapyon
0
120
その Valkey 使いこなしていますか?
onk
PRO
5
1.6k
価値について
gree_tech
PRO
0
110
初海外で注意すべきこと12選!!!安全快適なre:invent生活にするために
yuuuuuuu168
1
180
Tofu-Controller lightning talk @ Containerday 2026
gionn
0
120
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
190
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
450
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
200
DBについての基礎説明(MySQL編) - コロプラ 2026年度 新卒研修
colopl
0
130
Post AI時代のリファクタリング実践記 / Refactoring in the post AI era
kaminashi
1
290
React改造してみた
tsukina_7mochi
0
120
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
3
1.1k
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Technical Leadership for Architectural Decision Making
baasie
3
600
Typedesign – Prime Four
hannesfritz
42
3.2k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
How STYLIGHT went responsive
nonsquared
100
6.3k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
How to Talk to Developers About Accessibility
jct
2
580
Docker and Python
trallard
47
4.2k
Paper Plane
katiecoart
PRO
5
54k
Accessibility Awareness
sabderemane
1
250
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
Facilitating Awesome Meetings
lara
57
7.2k
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!