R logo

これからデータ整理の色々と書き留めていく予定。

まず、とあるcsv データを取り込み。

取り込みの方法は下記 ▼

Data1 - read.csv("Dataset.csv")

「str()」で確認すると、

factor になっていてほしいところが、numeric で認識されている。

データ; Str

そして、サマリーをみてみると、

サマリー

と、西暦なのに最大値とか最小値とか平均値とか四分位とかが出ている……。

 

このように数値やファクターを、本来カテゴライズされてほしいベクターに変換する方法……

factor ⇄ numeric の変換方法と注意点(症例提示)

例:下記のようなベクターを記述したとする。

input
x - c(11, 12, 14, 12, 14, 11)
x

output は こんなかんじ ▼

output
[1] 11 12 14 12 14 11

このように普通にベクターを入れると、doubleで返ってくる。

一応確認 ▼

> is.double(x)
[1] TRUE

> is.integer(x)
[1] FALSE

> is.numeric(x)
[1] TRUE

> is.complex(x)
[1] FALSE

> is.factor(x)
[1] FALSE

> is.ordered(x)
[1] FALSE

neumeric → factor の変換

neumeric から factor に変換するには、

as. factor
を使う。
input
x - as.factor(x)
x
output
[1] 11 12 14 12 14 11
Levels: 11 12 14

出力の下方に "Levels" が表示され、factor になっていることがわかる。

factor → neumeric の変換

factor から neumeric に変換するのはちょっとトリッキー。

間違い例

そのまま

as.numeric
を使うと……
input
x - as.numeric(x)
x
output
[1] 1 2 3 2 3 1

となり、カテゴライズされた数字で出力される。

このままデータ処理を進めてしまうと、間違った数字のままで計算していくことになる。

正解例

上記のトラブルを避けるためには、一度

as.character
で文字列にしてから
> x - as.character(x)
> x

[1] "11" "12" "14" "12" "14" "11"
as.neumeric
で数値に変換する。
> x - as.numeric(x)
> x

[1] 11 12 14 12 14 11

つなげて書くとこんなかんじ ▼

input
x -as.numeric(as.character(x))
x

もしくは

input
x -as.character(x) %>% as.numeric
x
output
[1] 11 12 14 12 14 11

Data1のデータで確認

取り込んだデータセット "Data1" の ID と西暦を「factor」に変換する。

Data1$ID - as.factor(Data1$ID)
Data1$Inception - as.factor(Data1$Inception)

str(Data1)
で構成をみると、「int」「Factor」に変換されている。
Strの結果

summary(Data1) 
でサマリーをみると、ID と 西暦がファクター毎にカテゴライズされている。
Summaryの結果

めでたしめでたし。

にほんブログ村 科学ブログ 脳科学へ
にほんブログ村 子育てブログ ワーキングマザー育児へ