[R]numericとfactorの相互変換

背景

R で read.csv  したデータに対して as.numeric(val) < n のような評価をしていたら、期待と全く異なる結果が返ってきた。
数値(numeric)がカテゴリーデータ(factor) として取り込まれているのが原因だった。

というわけで numeric <-> factor の相互変換の方法を調査。

numeric -> factor の変換

factor への変換は、素直に factor を使う。

# numeric なベクトルをつくる

> size <- c(8, 7, 5, 7, 8) 
> size
[1] 8 7 5 7 8
> class(size)
[1] "numeric"
> as.numeric(size)
[1] 8 7 5 7 8

# factor に変換

> size <- factor(size)
> size
[1] 8 7 5 7 8
Levels: 5 7 8
> class(size)
[1] "factor"
> as.numeric(size)
[1] 3 2 1 2 3
> levels(size)
[1] "5" "7" "8"

factor -> numeric の変換
factor では label が character、 level が numeric(labelでのインデックス)になっており、character にキャストすれば label が、numeric にキャストすれば level が返ってくる。

方針としては次の2つ

  1. label インデックスとしての level から label を引っ張り出し、numeric に変換
  2. ファクター全体を character にキャストしてlabel を引っ張り出し、numeric に変換
# 方針[1]

> levels(size)
[1] "5" "7" "8"
> as.numeric(size)
[1] 3 2 1 2 3
> levels(size)[size]
[1] "8" "7" "5" "7" "8"
> as.numeric(levels(size)[size])
[1] 8 7 5 7 8

# 方針[2]

> as.character(size)
[1] "8" "7" "5" "7" "8"
> as.numeric(as.character(size))
[1] 8 7 5 7 8

参考リンク

Advertisements
Tagged with: , , , , ,
Posted in R
One comment on “[R]numericとfactorの相互変換

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
  • RT @__apf__: How to write a research paper: a guide for software engineers & practitioners. docs.google.com/presentation/d… /cc @inwyrd 4 months ago
  • RT @HayatoChiba: 昔、自然と対話しながら数学に打ち込んだら何かを悟れるのではと思いたち、専門書1つだけ持ってパワースポットで名高い奈良の山奥に1週間籠ったことがある。しかし泊まった民宿にドカベンが全巻揃っていたため、水島新司と対話しただけで1週間過ぎた。 それ… 5 months ago
  • RT @googlecloud: Ever wonder what underwater fiber optic internet cables look like? Look no further than this deep dive w/ @NatAndLo: https… 5 months ago
  • @ijin UTC+01:00 な時間帯で生活しています、、、 10 months ago
  • RT @mattcutts: Google's world-class Site Reliability Engineering team wrote a new book: amazon.com/Site-Reliabili… It's about managing produc… 1 year ago
%d bloggers like this: