R の as.numeric 関数を使用して係数を数値に変換する
この記事では、R で因数を数値に変換する方法に関する複数の方法を示します。
as.numeric
関数を使用して、R の因数を数値に変換する
as
関数は通常、データ型を別の型に明示的に変換するために使用されます。変換プロセスは、R の用語では強制と呼ばれ、他のプログラミング言語に存在するキャストの概念を示します。関数 as.logical
を呼び出すと、渡された引数を論理型に強制変換しようとします。同様に、as.character
と as.numeric
は、指定された引数を対応する型に変換します。論理型に変換された数値(ゼロを除く)は、負の値であっても、TRUE
値を表すことに注意してください。
> as.logical(31)
[1] TRUE
> as.logical(-31)
[1] TRUE
> as.character(31)
[1] "31"
> as.numeric(FALSE)
[1] 0
> as.numeric(TRUE)
[1] 1
R は、暗黙の型強制ルールも実装します。これは、異なる型で構成されるベクトルに対して算術演算を実行するときに必要です。次のコードスニペットに示されているように、アトミックベクトルに文字列が含まれている場合、他のすべての要素も文字列に変換されます。ベクトルに論理、数値、文字列の混合要素が含まれている場合、それらは文字列タイプに強制されます。最後に、ベクトルに数値と論理が含まれている場合、後者は数値に変換されます。
> v1 <- c(1, "two", 3, 4, 5, 6)
> typeof(v1)
[1] "character"
> v1 <- c(T, "two", 3, 1, F, T)
> typeof(v1)
[1] "character"
> v1 <- c(1, T, 3, F, 5, 6)
> typeof(v1)
[1] "double"
因子を数値に変換する場合、as.numeric
は基になる整数表現のみを返すことに注意することが重要です。これはほとんど意味がなく、因子レベルに対応していません。unclass
関数を使用して、因子オブジェクトが内部にどのように格納されているかを調べることができます。f2
ファクターのインデックスは 2 1 2 3
であることに注意してください。これは通常、次のコードサンプルに示すように as.number
呼び出しを使用して返されます。
> f2 <- factor(c(3, 2, 3, 4))
> f2
[1] 3 2 3 4
Levels: 2 3 4
> f2.n <- as.numeric(f2)
> unclass(f2)
[1] 2 1 2 3
attr(,"levels")
[1] "2" "3" "4"
> f2.n
[1] 2 1 2 3
as.character
関数と as.numeric
関数を組み合わせて、R で因数を数値に変換する
因子レベルは、as.character
関数と as.numeric
関数を組み合わせることで整数型に変換できます。as.character
は、因子レベルを文字列として返します。次に、as.numeric
関数を呼び出して、文字列を数値に強制変換できます。
> f2 <- factor(c(3, 2, 3, 4))
> f2.c <- as.character(f2)
> f2.c
[1] "3" "2" "3" "4"
> f2.c <- as.numeric(as.character(f2))
> f2.c
[1] 3 2 3 4