R中从因子转换为数值变量的问题

机器算法验证 r 数据转换
2022-03-25 21:39:28

我想将因子变量转换为数字变量,但as.numeric没有达到我期望的效果。

下面我根据原始变量获得变量数字版本的汇总统计信息。手段不断增加1......也许(他推测)因子的水平既有名称又有数字,我期待新变量的值来自as.numeric设计使用数字时的名称?

> describe.by(as.numeric(df$sch), df$sch)

group: 
  var    n mean sd median trimmed mad min max range skew kurtosis se
1   1 5389    1  0      1       1   0   1   1     0  NaN      NaN  0
--------------------------------------------------------- 
group: 001
  var  n mean sd median trimmed mad min max range skew kurtosis se
1   1 19    2  0      2       2   0   2   2     0  NaN      NaN  0
--------------------------------------------------------- 
group: 002
  var  n mean sd median trimmed mad min max range skew kurtosis se
1   1 54    3  0      3       3   0   3   3     0  NaN      NaN  0
--------------------------------------------------------- 
2个回答

这是正确的:as.numeric(factor)返回 R 分配给该因子水平的数字。你可以试试as.numeric(as.character(factor))

这是R 常见问题中的FAQ 7.10 。是的,一个因子存储为从 1 到级别数的整数,并且 as.numeric 给出了基础代码。常见问题解答提供了 2 种转换为数字的方法。

但是,这通常是因为当您读取其中的数据时,您的数据中有一些内容导致 R 将其视为一个因素而不是数字(通常是一个杂散的非数字字符)。通常最好修复原始数据(转换会将非数字部分转换为 NA)或使用 colClasses 参数(如果使用 read.table 或类似参数)。