1
此问题与Convert factor to integer和How to convert a factor to an integer\numeric without a loss of information有关,但与类型强制的问题稍有不同。重新标记后将因子转换为数字
前两个问题似乎涉及到一个因素是明确构造的一个因素是从类或integer
类的先前存在的向量没有relabicing levels
。在这些情况下:
f <- factor(c("1","2","1","2"))
as.numeric(levels(f))[f]
回报
# [1] 1 2 1 2
,但是当我重新标记的水平:
f <- factor(c("1","2","1","2"))
f <- factor(f,
levels = c(1, 2),
labels = c("a", "b"))
as.numeric(levels(f))[f]
我会得到
# [1] NA NA NA NA
# Warning message:
# NAs introduced by coercion
而
个as.numeric(f)
回报
# [1] 1 2 1 2
什么是在这种情况下正确的程序,以获得原始值回?它只是as.numeric(f)
?
在情况下,它是相关的:
> sessionInfo()
R version 3.1.2 RC (2014-10-28 r66890)
Platform: x86_64-unknown-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_IE.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_IE.UTF-8 LC_COLLATE=en_IE.UTF-8
[5] LC_MONETARY=en_IE.UTF-8 LC_MESSAGES=en_IE.UTF-8
[7] LC_PAPER=en_IE.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_IE.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] tools_3.1.2
重新标记后,原始值将永远丢失。 'as.numeric()'将总是为第一级返回1,第二级为2,等等。不管实际/原始标签或值是什么。 – MrFlick 2014-10-29 17:20:06
这很好。我担心在这种情况下'as.numeric()'可能以某种方式返回原始值,如果我通过使用'as.numeric()'将数据框提交给某人,在所有(因素)列上。 – 2014-10-31 13:52:47