요인 수준과 요인 레이블 간의 혼동
R에서 요인의 수준과 레이블간에 차이가있는 것 같습니다. 지금까지 저는 항상 수준이 요인 수준의 '실제'이름이고 레이블이 출력에 사용되는 이름이라고 생각했습니다 (예 : 표 및 그림). . 다음 예에서 볼 수 있듯이 분명히 이것은 사실이 아닙니다.
df <- data.frame(v=c(1,2,3),f=c('a','b','c'))
str(df)
'data.frame': 3 obs. of 2 variables:
$ v: num 1 2 3
$ f: Factor w/ 3 levels "a","b","c": 1 2 3
df$f <- factor(df$f, levels=c('a','b','c'),
labels=c('Treatment A: XYZ','Treatment B: YZX','Treatment C: ZYX'))
levels(df$f)
[1] "Treatment A: XYZ" "Treatment B: YZX" "Treatment C: ZYX"
스크립팅 할 때 레벨 ( 'a', 'b', 'c')에 여전히 액세스 할 수 있다고 생각했지만 작동하지 않습니다.
> df$f=='a'
[1] FALSE FALSE FALSE
그러나 이것은 다음을 수행합니다.
> df$f=='Treatment A: XYZ'
[1] TRUE FALSE FALSE
그래서 내 질문은 두 부분으로 구성됩니다.
레벨과 레이블의 차이점은 무엇입니까?
스크립팅 및 출력을위한 요인 수준에 대해 다른 이름을 가질 수 있습니까?
배경 : 긴 스크립트의 경우 요소 수준이 짧은 스크립트가 훨씬 쉬워 보입니다. 그러나 보고서 및 그림의 경우이 짧은 요인 수준은 적절하지 않을 수 있으며 더 정확한 이름으로 대체해야합니다.
매우 짧음 : 레벨은 입력이고 레이블은 factor()
함수 의 출력입니다 . 요소에는 함수 level
의 labels
인수로 설정되는 속성 만 factor()
있습니다. 이것은 SPSS와 같은 통계 패키지의 레이블 개념과 다르며 처음에는 혼란 스러울 수 있습니다.
이 코드 줄에서 수행하는 작업
df$f <- factor(df$f, levels=c('a','b','c'),
labels=c('Treatment A: XYZ','Treatment B: YZX','Treatment C: ZYX'))
R에게 벡터가 있음을 알려줍니다. df$f
- 요인으로 변환하려는
- 서로 다른 수준이 a, b 및 c로 코딩되는 경우
- 레벨을 치료 A 등으로 표시하려는 경우
factor 함수는 a, b, c 값을 찾아 수치 적 요인 분류로 변환 한 다음 라벨 값을 level
요인 의 속성에 추가합니다 . 이 속성은 내부 숫자 값을 올바른 레이블로 변환하는 데 사용됩니다. 그러나 보시다시피 label
속성 이 없습니다 .
> df <- data.frame(v=c(1,2,3),f=c('a','b','c'))
> attributes(df$f)
$levels
[1] "a" "b" "c"
$class
[1] "factor"
> df$f <- factor(df$f, levels=c('a','b','c'),
+ labels=c('Treatment A: XYZ','Treatment B: YZX','Treatment C: ZYX'))
> attributes(df$f)
$levels
[1] "Treatment A: XYZ" "Treatment B: YZX" "Treatment C: ZYX"
$class
[1] "factor"
레벨이나 레이블을 참조 할 수있는 "lfactors"패키지를 작성했습니다.
# packages
install.packages("lfactors")
require(lfactors)
flips <- lfactor(c(0,1,1,0,0,1), levels=0:1, labels=c("Tails", "Heads"))
# Tails can now be referred to as, "Tails" or 0
# These two lines return the same result
flips == "Tails"
#[1] TRUE FALSE FALSE TRUE TRUE FALSE
flips == 0
#[1] TRUE FALSE FALSE TRUE TRUE FALSE
lfactor는 레벨이 레이블과 혼동되지 않도록 숫자 여야합니다.
참고 URL : https://stackoverflow.com/questions/5869539/confusion-between-factor-levels-and-factor-labels
'Programing' 카테고리의 다른 글
CSS 테이블 레이아웃 : 테이블 행이 여백을 허용하지 않는 이유는 무엇입니까? (0) | 2020.09.01 |
---|---|
JSON, jQuery를 사용하여 복잡한 개체 배열을 ASP.NET MVC 컨트롤러에 게시하는 방법은 무엇입니까? (0) | 2020.09.01 |
Git rebase-모든 병합 충돌이 해결 된 경우에도 계속 불평 (0) | 2020.09.01 |
DataContractSerializer가 내 생성자를 호출하지 않습니까? (0) | 2020.09.01 |
한 단어 만 포함하고 다른 단어는 포함하지 않는 문자열에 대한 정규식 (0) | 2020.09.01 |