R で因数を数値に変換する方法 (例付き)
次の構文を使用して、R で因子ベクトルを数値ベクトルに変換できます。
numeric_vector <- as. numeric (as. character (factor_vector))
まず因子ベクトルを文字ベクトルに変換し、次に数値ベクトルに変換する必要があります。これにより、数値ベクトルに因子水準ではなく実際の数値が含まれることが保証されます。
このチュートリアルでは、この関数の実際の使用例をいくつか紹介します。
例 1: 因子ベクトルを数値に変換する
次のコードは、因子ベクトルを数値ベクトルに変換する方法を示しています。
#define factor vector
factor_vector <- factor(c(1, 5, 7, 8))
#convert factor vector to numeric vector
numeric_vector <- as. numeric (as. character (factor_vector))
#view class
class(numeric_vector)
[1] "digital"
例 2: 因子列を数値に変換する
次のコードは、因子データ フレーム内の特定の列を数値に変換する方法を示しています。
#create data frame
df <- data. frame (a = factor(c(1, 5, 7, 8)),
b = c(28, 34, 35, 36))
#convert column 'a' from factor to numeric
df$a <- as. numeric (as. character (df$a))
#view new data frame
df
ab
1 1 28
2 5 34
3 7 35
4 8 36
#confirm class of numerical vector
class(df$a)
[1] "digital"
例 3: 複数の因子列を数値に変換する
次のコードは、因子データ フレーム内のすべての因子列を数値に変換する方法を示しています。
#create data frame
df <- data. frame (a = factor(c(1, 5, 7, 8)),
b = factor(c(2, 3, 4, 5)),
c = c('A', 'B', 'C', 'D'),
d = c(45, 56, 54, 57))
#display classes of each column
sapply(df, class)
abcd
"factor" "factor" "character" "numeric"
#identify all factor columns
x <- sapply (df, is. factor )
#convert all factor columns to numeric
df[, x] <- as. data . frame ( apply (df[, x], 2, as.numeric ))
#display classes of each column
sapply (df, class)
abcd
"numeric" "numeric" "character" "numeric"
このコードは、データ フレーム列に次の変更を加えました。
- コラムa:郵便配達からデジタルへ
- コラムb:郵便配達からデジタルへ
- c列:変更なし(キャラクターだったので)
- d列:変更なし(すでに数値なので)
apply()関数とsapply()関数を使用すると、因子列のみを数値列に変換し、他のすべての列は変更しないままにすることができました。