factor を numeric に     Last modified: Mar 03, 2006

> x <- c(11.49, 9.91, 9.59, 8.94, 10.06, 10.02)
> f <- factor(x)
> x
[1] 11.49  9.91  9.59  8.94 10.06 10.02
> f
[1] 11.49 9.91  9.59  8.94  10.06 10.02
Levels: 8.94 9.59 9.91 10.02 10.06 11.49
のように,実数値ベクトルを factor に変換したあと,
factr ベクトルから元の実数値ベクトルを得るために,
次のようにしても目的は達成できない。
> as.numeric(f)
[1] 6 3 2 1 5 4
levels 関数というのがあり,それは次のような結果を返すことがわかるから,
> levels(f)
[1] "8.94"  "9.59"  "9.91"  "10.02" "10.06" "11.49"
次のようにすると目的の達成への第一歩であることがわかる。
> levels(f)[f]
[1] "11.49" "9.91"  "9.59"  "8.94"  "10.06" "10.02"
最終的な答えは以下の通り。
> as.numeric(levels(f)[f])
[1] 11.49  9.91  9.59  8.94 10.06 10.02
これには,別解もある。
どちらも効率的には,そんなに大きな違いはない。
> as.numeric(as.character(f))
[1] 11.49  9.91  9.59  8.94 10.06 10.02
これらは,関数を作っておくと良いかもしれない。
> factor2numeric <- function(x) as.numeric(as.character(x))
> factor2numeric(f)
[1] 11.49  9.91  9.59  8.94 10.06 10.02


・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI

Made with Macintosh