R의 factor() 명령은 계층 구조 수준의 범주 형 변수에만 사용됩니까?
요인 (교육) 또는 요인 (연령대)을 R로 사용할 때 나는 혼란 스럽습니다. 범주 별 정렬 데이터에 사용됩니까? 아니면 계층 구조가없는 단순한 범주 형 데이터를 사용할 수 있습니까?
나는 이것이 매우 기초적이라는 것을 알고있다. 나는 정말로 약간의 설명이 필요하다.
R의 factor() 명령은 계층 구조 수준의 범주 형 변수에만 사용됩니까?
요인 (교육) 또는 요인 (연령대)을 R로 사용할 때 나는 혼란 스럽습니다. 범주 별 정렬 데이터에 사용됩니까? 아니면 계층 구조가없는 단순한 범주 형 데이터를 사용할 수 있습니까?
나는 이것이 매우 기초적이라는 것을 알고있다. 나는 정말로 약간의 설명이 필요하다.
나는 여기에 분명한 질문을 정말로 볼 수 없기 때문에 간단한 예제만으로도 충분할 것입니다.
다음과 같은 데이터가 있다고 가정 해보십시오.
set1 <- c("AA", "B", "BA", "CC", "CA", "AA", "BA", "CC", "CC")
이 데이터를 고려해야합니다.
f.set1 <- factor(set1)
출력을 살펴 보겠습니다. R은 레벨을 알파벳순으로 나열했지만 계층 구조를 의미하지는 않습니다 ("레벨"라인 참조).
f.set1
# [1] AA B BA CC CA AA BA CC CC
# Levels: AA B BA CA CC
is.ordered(f.set1)
# [1] FALSE
그러나, 고려 데이터에 as.numeric
를 사용하는 것은 계층 적 생각으로 당신을 속일 수 있습니다. "5"전에 오는 "4"아래의 출력 및 참고 또한 단순히 table(set1)
을 한 경우도 발생 table(f.set1)
의 알파벳 순으로 출력 (인치
as.numeric(f.set1)
# [1] 1 2 3 5 4 1 3 5 5
table(f.set1)
# f.set1
# AA B BA CA CC
# 2 1 2 1 3
이의 지금 우리가 사용 때 발생과 비교해 보자 참고 levels
인수와 함께 ordered
인수. levels
플러스 ordered = TRUE
사용이 범주 형 데이터 (우리가 데이터를 입력했는지하지 알파벳 또는 순서) levels
에 의해 지정된 순서, 계층 것을 우리에게 알려줍니다.
o.set1 <- factor(set1,
levels = c("CA", "BA", "AA", "CC", "B"),
ordered = TRUE)
결과를 보면 심지어 이제 우리에게 계층 구조가 표시됩니다.
o.set1
# [1] AA B BA CC CA AA BA CC CC
# Levels: CA < BA < AA < CC < B
is.ordered(o.set1)
# [1] TRUE
으로이 기능을 as.numeric
및 table
을한다.
as.numeric(o.set1)
# [1] 3 5 2 4 1 3 2 4 4
table(o.set1)
# o.set1
# CA BA AA CC B
# 1 2 2 3 1
그래서, 그 자체로
factor()
그냥 본질적 범주 형 데이터의 비 계층 분류 요소를 생성, 요약하기,
factor()
은
levels
이고
ordered = TRUE
인수는 계층 적 카테고리를 만듭니다.
주문한 요인을 직접 생성하려면 ordered()
을 사용하십시오. 범주의 순서는 여전히 지정해야합니다
ordered(set1, levels = c("CA", "BA", "AA", "CC", "B"))
당신은 ordered(x)
또는 factor(x, ordered=TRUE)
함께 만들어 요인 플래그를 명령 할 수있다.
정렬 된 요소 요소에서 그들의 수업 시간에 차이가 있지만, 방법과 모델 피팅 기능은 매우 다르게 두 개의 클래스를 치료 :
?factor
의 "세부 사항"섹션이 있음을 설명한다.
당신이 두 개체의 특성 비교하여 그 인용의 첫 번째 부분을 (그들은 자신의 클래스 만 다른 것을) 확인할 수 있습니다 (
f <- factor(letters[3:1], levels=letters[3:1])
of <- ordered(letters[3:1], levels=letters[3:1])
attributes(f)
# $levels
# [1] "c" "b" "a"
#
# $class
# [1] "factor"
attributes(of)
# $levels
# [1] "c" "b" "a"
#
# $class
# [1] "ordered" "factor"
다양한 요소 처리 R 기능을 의 두 번째 부분 인 해당 질문의의 "메서드 및 모델 피팅 함수")는 is.ordered()
을 사용하여 "ordered"
클래스 표시기의 존재 여부를 테스트하고 순서가 지정된 인수를 순서가 지정되지 않은 식별자와 다르게 처리하는 지시문으로 사용합니다. 다음은 몇 가지 예입니다.
## The print method for factors. (Type 'print.factor' to see the function's code)
print(f)
# [1] c b a
# Levels: c b a
print(of)
# [1] c b a
# Levels: c < b < a
## The contrasts function. (Type 'contrasts' to see the function's code.)
contrasts(of)
# .L .Q
# [1,] -7.071068e-01 0.4082483
# [2,] 4.350720e-18 -0.8164966
# [3,] 7.071068e-01 0.4082483
contrasts(f)
# b a
# c 0 0
# b 1 0
# a 0 1
좋은 답변은이 답변에 포함되어 있습니다. – A5C1D2H2I1M1N2O1R2T1
@ mrdwab - 고마워. 나는 당신이 당신의 코멘트를 너무 멋지게 확장하는 것으로 바쁘다는 것을 알았 더라면 답을 찾지 못했을 것입니다. –
'? factor '를 참조하십시오. 요인의 정렬 여부를 지정할 수 있습니다. – A5C1D2H2I1M1N2O1R2T1
@mrdwab 이미 확인했는데 막연합니다. 다음과 같은 네 가지 옵션이 있습니다.
입니다. 각 옵션에 대한 정의를 제게 줄 수 있습니까? cox ph를 모델링하려고했습니다. 교육 및 연령 집단에서 그 요소 코드를 사용하는 예를 보았습니다. 종교 카테고리에서도 사용할 수 있습니까? – leian"간결함"만큼 그리 많지 않습니다. 당신의 더 큰 질문에 관해서는, 당신이 작업하는 어떤 범주 형 변수에 대해서도 (주문 여부와 관계없이) 요인을 사용할 수 있어야합니다. 교육, 연령 집단, 종교 (처음 두 명은 주문할 수 있고 나머지 세 명은 그렇지 않을 수도 있음). –