1
이 질문은 Convert factor to integer 및 How to convert a factor to an integer\numeric without a loss of information과 관련이 있지만 유형 강제 변환과 약간 다른 문제점이 있습니다. 레이블을 다시 지정한 후 인수를 숫자로 변환
두 전직 질문
는 요인이 명시 적으로levels
레이블을 다시 지정하지 않고
numeric
또는 클래스
integer
의 클래스의 기존의 벡터로 구성되는 경우를 다루는 한 것 같다. 나는 수준의 레이블을 다시 지정하는 경우
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
반면, 617,451,515,
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
좋습니다. 나는 as.numeric() 함수를 사용하여 as.numeric()이 숫자 데이터 전용 프레임으로 누군가에게 내 데이터 프레임을 제출할 경우 혼란을 야기 할 원래 값을 어떻게 든 반환 할 것 같았습니다. 모든 (요소) 열에. –