如何在R中把分类变量转换为数字变量

1,841 阅读2分钟

你可以使用以下方法之一将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中执行其他常见的转换:

如何在R中把日期转换成数字
如何在R中把字符转换成因子
如何在R中把因子转换成字符