r - 将因子转换为数值并删除水平级别

3

我有一个数据框中的一列是数字1、2、3,一直到31。

该列的标题为'game'。

R告诉我,这一列由31个水平的因子组成。

enter image description here

如何将因子转换为数字而不显示水平,以便我可以进行数值分析?

我正在使用R studio。

2个回答

19

如果你直接从因子转换成数值类型,它将返回级别而不是实际值。在这种情况下并不重要,因为看起来级别和值是相同的。如果它们不同,你必须先将其转换为字符类型,然后再转换成数值类型。

df$game <- as.numeric(as.character(df$game))

0
如果您有一个因子数据框,每列都具有相同类型的数据,则可以直接使用as.matrix
> e=expand.grid(list(letters[1:2],letters[1:3]))
> str(e)
'data.frame':   6 obs. of  2 variables:
 $ Var1: Factor w/ 2 levels "a","b": 1 2 1 2 1 2
 $ Var2: Factor w/ 3 levels "a","b","c": 1 1 2 2 3 3
 - attr(*, "out.attrs")=List of 2
  ..$ dim     : int [1:2] 2 3
  ..$ dimnames:List of 2
  .. ..$ Var1: chr [1:2] "Var1=a" "Var1=b"
  .. ..$ Var2: chr [1:3] "Var2=a" "Var2=b" "Var2=c"
> str(as.matrix(e))
 chr [1:6, 1:2] "a" "b" "a" "b" "a" "b" "a" "a" "b" "b" "c" "c"
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:2] "Var1" "Var2"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接