これからデータ整理の色々と書き留めていく予定。
まず、とあるcsv データを取り込み。
取り込みの方法は下記 ▼
エクセルのデータを R にインポートする方法。 csv ファイル エクセルデータを csv ファイルに保存してインポートするのが最も一般的。 CSV ファイルとは CSV ファイルは、「comma Separated V …
Data1 <- read.csv("Dataset.csv")
「str()」で確認すると、
factor になっていてほしいところが、numeric で認識されている。
そして、サマリーをみてみると、
と、西暦なのに最大値とか最小値とか平均値とか四分位とかが出ている……。
このように数値やファクターを、本来カテゴライズされてほしいベクターに変換する方法……
factor ⇄ numeric の変換方法と注意点(症例提示)
例:下記のようなベクターを記述したとする。
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
を使う。
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
を使うと……
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
つなげて書くとこんなかんじ ▼
x <- as.numeric(as.character(x))
x
もしくは
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」に変換されている。
summary(Data1)
でサマリーをみると、ID と 西暦がファクター毎にカテゴライズされている。
めでたしめでたし。