让我首先说我对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 ...
为什么会这样?我在做什么错了?
答案 0 :(得分:0)
这里的问题是,您正在为数据框列分配一个数值,该数值是熟练程度,但是随后您使用str()
检查了一个str(df$proficiency)
,则此转换应该是正确的。
df$proficiency<-as.numeric(levels(df$proficiency))[df$proficiency]
对于大型数据帧而言,速度稍快