我如何才能永久性地将数据框数字化?

时间:2019-01-08 16:51:57

标签: r function

让我首先说我对R和编程非常陌生,所以这可能是一个愚蠢的问题。但是,它去了。

我正在处理一个大型数据框,其中包含来自语料库的元数据。一栏包含文本的熟练程度(即“ B1”,“ B2”,“ C1”,“ C2”)。我已经能够将这些因子级别重命名为“ 1”,“ 2”,“ 3”和“ 4”,但是我需要将它们设置为数字,以便在线性建模中将此列用作因变量。我尝试了一些建议的方法,但是这些方法不起作用,我也不知道为什么。

我尝试了以下代码,但是当我检查结构时,它仍然是具有四个级别的因素,并且不是数字:

> as.numeric(as.character(df$proficiency))
  [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2
 [42] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 ...
[452] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4

> str(proficiency)
 Factor w/ 4 levels "1","2","3","4": 1 1 1 1 1 1 1 1 1 1 ...

#I have also tried this, but it does not work either. 
> df$proficiency<-as.numeric(as.character(df$proficiency))

> str(proficiency)
 Factor w/ 4 levels "1","2","3","4": 1 1 1 1 1 1 1 1 1 1 ...

为什么会这样?我在做什么错了?

1 个答案:

答案 0 :(得分:0)

这里的问题是,您正在为数据框列分配一个数值,该数值是熟练程度,但是随后您使用str()检查了一个变量的熟练程度。正如@joran在评论中所说,如果您进行str(df$proficiency),则此转换应该是正确的。

df$proficiency<-as.numeric(levels(df$proficiency))[df$proficiency]

对于大型数据帧而言,速度稍快

相关问题