SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
FACTOR型の注意点
Hiroki. K
Factor型について
 水準(Levels)がある変数
 デフォルト設定でData.Frameをつくる場合、文字列はFactorとなる
(例) > ans <- data.frame(result=c('yes', 'no', 'yes'))
> str(ans)
'data.frame': 3 obs. of 1 variable:
$ result: Factor w/ 2 levels "no","yes": 2 1 2
水準(Levels) 順位
no 1
yes 2
result
1
2
1
ans =
Factor型の操作が必要になる場合
 水準を任意の順に設定する(デフォルトはアルファベット順)
例1: yes、noの順になるようにData.Frameをつくる
> ans <- data.frame(result=c('yes', 'no', 'yes'), levels=('yes', 'no'))
> str(ans)
'data.frame': 3 obs. of 1 variable:
$ result: Factor w/ 2 levels “yes",“no": 1 2 1
【準備】以降で使うデータ①
#サンプルデータ: 1週間の曜日と値
> set.seed(123)
> data <- data.frame(day = c('mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'),
val = rnorm(7))
> str(data)
'data.frame': 7 obs. of 2 variables:
$ day: Factor w/ 7 levels "fri","mon","sat",..: 2 6 7 5 1 3 4
$ val: num 0.78 1.456 -0.644 -1.553 -1.598 ...
【準備】以降で使うデータ②
#サンプルデータ: 数値にエラーが入る場合
> data$valError <- c('error', data$val[-1])
> str(data)
'data.frame': 7 obs. of 4 variables:
$ day: Factor w/ 7 levels "fri","mon","sat",..: 2 6 7 5 1 3 4
$ val: num 0.62 0.612 -0.162 0.812 2.197 ...
$ daySorted: Factor w/ 7 levels "mon","tue","wed",..: 1 2 3 4 5 6 7
$ valError: chr "error" "0.612123492650849" "-0.162310976918126" ...
【準備】以降で使うデータ③
#サンプルデータ: 曜日の水準の並べ替え⇒曜日順にする
> data$daySorted <- factor(data$day, levels=data$day)
#data$daySorted <- factor(data$day, levels=c(‘mon’, ‘tue’, ‘wed’, ‘thu’, ‘fri’, ‘sat’, ‘sun’))と同じ
> str(data)
'data.frame': 7 obs. of 4 variables:
$ day: Factor w/ 7 levels "fri","mon","sat",..: 2 6 7 5 1 3 4
$ val: num 0.62 0.612 -0.162 0.812 2.197 ...
$ daySorted: Factor w/ 7 levels "mon","tue","wed",..: 1 2 3 4 5 6 7
【準備】以降で使うデータ④
#サンプルデータ: 一旦CSVで保存して再度読み込む
> write.csv(data, 'data.csv', row.names=F)
> data1 <- read.csv('data.csv')
> data1$daySorted <- factor(data1$daySorted, levels=data1$daySorted)
> str(data1)
'data.frame': 7 obs. of 4 variables:
$ day: Factor w/ 7 levels "fri","mon","sat",..: 2 6 7 5 1 3 4
$ val: num 0.62 0.612 -0.162 0.812 2.197 ...
$ daySorted: Factor w/ 7 levels "mon","tue","wed",..: 1 2 3 4 5 6 7
$ valError: chr "error" "0.612123492650849" "-0.162310976918126" ...
【準備】以降で使うデータ⑤
#ここまでで準備したもの
day val daySorted valError
mon 0.6204 mon error
tue 0.6121 tue 0.6121
wed -0.1623 wed -0.1623
thu 0.8119 thu 0.8119
fri 2.1968 fri 2.1968
sat 2.0492 sat 2.0492
sun 1.6324 sun 1.6324
data =
保存・再読み込み
day val daySorted valError
mon 0.6204 mon error
tue 0.6121 tue 0.6121
wed -0.1623 wed -0.1623
thu 0.8119 thu 0.8119
fri 2.1968 fri 2.1968
sat 2.0492 sat 2.0492
sun 1.6324 sun 1.6324
data1 =
chr num factor chr chr num factor factor
Factorの並び替え
 デフォルトはアルファベット順
例2: dataのday, valをグラフ化
そのままグラフ化する場合:
> ggplot(data, aes(x=day, y=val)) +
geom_bar(stat='identity') +
theme_bw()
Factorの並び替え
 水準を任意の順に設定する
例3: dataのdaySorted, valをグラフ化
> ggplot(data, aes(x=day, y=valSorted)) +
geom_bar(stat='identity') +
theme_bw()
曜日順になっている ⇒
Factorに異常値が混入している場合
 まずは異常値が混入していない場合
例3: dataのdaySorted, valをグラフ化(再掲)
> ggplot(data, aes(x=day, y=valSorted)) +
geom_bar(stat='identity') +
theme_bw()
Factorに異常値が混入している場合
 次に異常値(error)が混入している場合
例4: dataのdaySorted, valErrorをグラフ化
> ggplot(data,
aes(x=daySorted,
y=as.numeric(valError))) +
geom_bar(stat='identity') +
theme_bw()
as.numericで異常値分が欠損になる(NAに強制変換)
Factorに異常値が混入している場合
 異常値(error)が混入しているデータを再読み込みする
例4: data1のdaySorted, valErrorをグラフ化
> ggplot(data1,
aes(x=daySorted,
y=as.numeric(valError))) +
geom_bar(stat='identity') +
theme_bw()
as.numericでFactorの順位が数値化されてしまう
Factorに異常値が混入している場合
data valに欠損値 保存・再読み込み data1
as.numeric(val) as.numeric(val)
そのまま数値化できない
Factorに異常値が混入している場合
data valに欠損値 保存・再読み込み data1
as.numeric(val) as.numeric(as.character(val))
一回文字列に直してから数値化

Más contenido relacionado

Similar a Factor型の注意点

20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門Takashi Kitano
 
負荷テストことはじめ
負荷テストことはじめ負荷テストことはじめ
負荷テストことはじめKazumune Katagiri
 
Wb osaka 20120623
Wb osaka 20120623Wb osaka 20120623
Wb osaka 20120623Miho Ishida
 
Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017wada, kazumi
 
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクトEWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクトKiyoshi Sawada
 
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクトEWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクトKiyoshi Sawada
 
月間10億pvを支えるmongo db
月間10億pvを支えるmongo db月間10億pvを支えるmongo db
月間10億pvを支えるmongo dbYuji Isobe
 
第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)Yoshitake Takebayashi
 
初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)Masahiro Hayashi
 
R入門とgoogle map +α
R入門とgoogle map +αR入門とgoogle map +α
R入門とgoogle map +αkobexr
 
jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -Hayato Mizuno
 
Feature Selection with R / in JP
Feature Selection with R / in JPFeature Selection with R / in JP
Feature Selection with R / in JPSercan Ahi
 
第2回R勉強会1
第2回R勉強会1第2回R勉強会1
第2回R勉強会1Paweł Rusin
 
2011年11月18日
2011年11月18日2011年11月18日
2011年11月18日nukaemon
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料時響 逢坂
 
Python for Data Analysis: Chapter 2
Python for Data Analysis: Chapter 2Python for Data Analysis: Chapter 2
Python for Data Analysis: Chapter 2智哉 今西
 
データサイエンティスト必見!M-1グランプリ
データサイエンティスト必見!M-1グランプリデータサイエンティスト必見!M-1グランプリ
データサイエンティスト必見!M-1グランプリSatoshi Kitajima
 

Similar a Factor型の注意点 (20)

20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門
 
負荷テストことはじめ
負荷テストことはじめ負荷テストことはじめ
負荷テストことはじめ
 
R intro
R introR intro
R intro
 
Wb osaka 20120623
Wb osaka 20120623Wb osaka 20120623
Wb osaka 20120623
 
Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017
 
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクトEWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
 
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクトEWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
 
月間10億pvを支えるmongo db
月間10億pvを支えるmongo db月間10億pvを支えるmongo db
月間10億pvを支えるmongo db
 
第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)
 
初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)
 
Tokyo r28 1
Tokyo r28 1Tokyo r28 1
Tokyo r28 1
 
R入門とgoogle map +α
R入門とgoogle map +αR入門とgoogle map +α
R入門とgoogle map +α
 
jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -
 
Feature Selection with R / in JP
Feature Selection with R / in JPFeature Selection with R / in JP
Feature Selection with R / in JP
 
第2回R勉強会1
第2回R勉強会1第2回R勉強会1
第2回R勉強会1
 
2011年11月18日
2011年11月18日2011年11月18日
2011年11月18日
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
 
Python for Data Analysis: Chapter 2
Python for Data Analysis: Chapter 2Python for Data Analysis: Chapter 2
Python for Data Analysis: Chapter 2
 
20140920 tokyo r43
20140920 tokyo r4320140920 tokyo r43
20140920 tokyo r43
 
データサイエンティスト必見!M-1グランプリ
データサイエンティスト必見!M-1グランプリデータサイエンティスト必見!M-1グランプリ
データサイエンティスト必見!M-1グランプリ
 

Factor型の注意点