在R中分类为数值变量

时间:2019-07-24 18:17:15

标签: r

使用10个不带小数的随机数创建因子向量v1。 将因子向量转换为数值向量v2。 逐元素比较v1和v2。将比较值(对或错)存储在向量中,并显示出来。

我已经尝试过了:

v1<- factor(round(runif(10)),0)
v1
v2<-as.numeric(v1)
v2
comp<-v1==v2
comp

1 个答案:

答案 0 :(得分:0)

看看下面的代码。

当v1是一个因数时,as.numeric(v1)返回有关v1每个元素级别的信息。在此示例中,第一个元素是5,是因子的第三级,因此数字返回3。

v1的第二个元素是2,这也是第二个级别,因此as.numeric返回2,我们在比较v1 == v2时得到TRUE。还要查看帮助?factor

使用as.numeric(as.character(v1)进行预期的转换。

set.seed(2002)

v1 <- factor(round(10*runif(10),0))
v1
# [1] 5  2  9  0  9  8  8  10 10 9 
# Levels: 0 2 5 8 9 10

str(v1)
#Factor w/ 6 levels "0","2","5","8",..: 3 2 5 1 5 4 4 6 6 5

v2 <- as.numeric(v1)
v2
# [1] 3 2 5 1 5 4 4 6 6 5

v1 == v2
#[1] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE


v2 <- as.numeric(as.character(v1))
v1 == v2
#[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE