你可以使用以下方法之一将R中的分类变量转换为数字变量。
方法1:将一个分类变量转换为数字变量
df$var1 <- unclass(df$var1)
方法2:将多个分类变量转换为数字变量
df[, c('var1', 'var2')] <- sapply(df[, c('var1', 'var2')], unclass)
方法3:将所有分类变量转换为数字变量
df[sapply(df, is.factor)] <- data.matrix(df[sapply(df, is.factor)])
下面的例子显示了如何用下面的数据框架来使用每种方法:
#create data frame with some categorical variables
df <- data.frame(team=as.factor(c('A', 'B', 'C', 'D')),
conf=as.factor(c('AL', 'AL', 'NL', 'NL')),
win=as.factor(c('Yes', 'No', 'No', 'Yes')),
points=c(122, 98, 106, 115))
#view data frame
df
team conf win points
1 A AL Yes 122
2 B AL No 98
3 C NL No 106
4 D NL Yes 115
方法1:将一个分类变量转换为数字变量
下面的代码显示了如何将数据框中的一个分类变量转换为数字变量:
#convert 'team' variable to numeric
df$team <- unclass(df$team)
#view updated data frame
df
team conf win points
1 1 AL Yes 122
2 2 AL No 98
3 3 NL No 106
4 4 NL Yes 115
请注意,"团队 "变量的值已经被转换为数字值。
方法2:将多个分类变量转换为数字变量
下面的代码显示了如何将数据框中的多个分类变量转换为数字变量:
#convert 'team' and 'win' variables to numeric
df[, c('team', 'win')] <- sapply(df[, c('team', 'win')], unclass)
#view updated data frame
df
team conf win points
1 1 AL 2 122
2 2 AL 1 98
3 3 NL 1 106
4 4 NL 2 115
请注意,"团队 "和 "胜利 "变量的值已经被转换为数字值。
方法3:将所有分类变量转换为数字变量
下面的代码显示了如何将数据框中的所有分类变量转换为数字变量:
#convert all categorical variables to numeric
df[sapply(df, is.factor)] <- data.matrix(df[sapply(df, is.factor)])
#view updated data frame
df
team conf win points
1 1 1 2 122
2 2 1 1 98
3 3 2 1 106
4 4 2 2 115
请注意,数据框中的每个分类变量的值都被转换为数字值。
其他资源
下面的教程解释了如何在R中执行其他常见的转换: