수색…


통사론

  1. 요소 (x = character (), 수준, 레이블 = 수준, 제외 = NA, 순서 = is.ordered (x), nmax = NA)
  2. ?factor 실행하거나 온라인 설명서를 참조하십시오 .

비고

클래스 factor 가있는 객체는 특정 특성 세트가있는 벡터입니다.

  1. 내부적으로 integer 벡터로 저장됩니다.
  2. 값의 문자 표현을 보여주는 levels 속성을 유지합니다.
  3. 그 클래스는 factor 로 저장됩니다.

예를 들어, 일련의 색상에서 1,000 개의 관측치 벡터를 생성합니다.

set.seed(1)
Color <- sample(x = c("Red", "Blue", "Green", "Yellow"), 
                size = 1000, 
                replace = TRUE)
Color <- factor(Color)

위에 나열된 Color 각 특성을 관찰 할 수 있습니다.

#* 1. It is stored internally as an `integer` vector
typeof(Color)
[1] "integer"
#* 2. It maintains a `levels` attribute the shows the character representation of the values.
#* 3. Its class is stored as `factor`
attributes(Color)
$levels
[1] "Blue"   "Green"  "Red"    "Yellow"

$class
[1] "factor"

요인 객체의 주요 이점은 데이터 저장의 효율성입니다. 정수는 문자보다 저장에 필요한 메모리가 적습니다. 많은 컴퓨터가 현재 컴퓨터보다 리소스가 훨씬 부족한 경우 이러한 효율성은 매우 바람직했습니다 (요소 사용에 대한 동기에 대한 자세한 내용은 stringsAsFactors : Unauthorized Biography 참조 ). 메모리 사용의 차이는 Color 객체에서도 볼 수 있습니다. 보시다시피, Color 를 문자로 저장하는 것은 factor 객체보다 약 1.7 배의 메모리가 필요합니다.

#* Amount of memory required to store Color as a factor.
object.size(Color)
4624 bytes
#* Amount of memory required to store Color as a character
object.size(as.character(Color))
8232 bytes

정수를 레벨에 매핑하기

팩터의 내부 계산은 오브젝트를 정수로보고 있지만, 사람이 소비하는 데 필요한 표현은 문자 레벨입니다. 예를 들어,

head(Color)
[1] Blue   Blue   Green  Yellow Red    Yellow  
Levels: Blue Green Red Yellow

인간의 이해를 돕기보다 쉽다.

head(as.numeric(Color))
[1] 1 1 2 4 3 4

R이 문자 표현과 내부 정수 값을 비교하는 방법에 대한 대략적인 설명은 다음과 같습니다.

head(levels(Color)[as.numeric(Color)])
[1] "Blue"   "Blue"   "Green"  "Yellow" "Red"    "Yellow"

이 결과를 다음과 비교하십시오.

head(Color)
[1] Blue   Blue   Green  Yellow Red    Yellow  
Levels: Blue Green Red Yellow

현대의 요인 사용

2007 년 R은 문자 벡터에 대한 메모리 부담을 줄인 문자 해싱 메서드를 도입했습니다 (문자열 : stringsAsFactors 전기 ). 캐릭터가 요인보다 1.7 배 더 많은 저장 공간을 필요로한다고 판단했을 때, 이는 R의 최근 버전에서 계산되었는데, 이는 문자 벡터의 메모리 사용이 2007 이전에 훨씬 더 과세되었음을 의미합니다.

현대 R의 해싱 방법과 현대 컴퓨터의 훨씬 많은 메모리 리소스로 인해 문자 값을 저장하는 데있어 메모리 효율성 문제가 매우 작은 관심사로 감소되었습니다. R 커뮤니티의 일반적인 태도는 대부분의 상황에서 요인에 대한 인물 벡터에 대한 선호입니다. 요인에서 벗어나는 주요 원인은

  1. 구조화되지 않은 문자 및 / 또는 느슨하게 제어되는 문자 데이터의 증가
  2. 사용자가 자신이 캐릭터가 아닌 요인을 다루는 것을 잊었을 때 요인이 원하는대로 행동하지 않는 경향

첫 번째 경우에는 자유 텍스트 또는 열린 응답 필드를 요소로 저장하는 것은 의미가 없으므로 레벨 당 하나 이상의 관찰을 허용하는 패턴은 없을 것입니다. 또는 데이터 구조가 신중하게 제어되지 않으면 동일한 범주 (예 : "파란색", "파란색"및 "파란색")에 해당하는 여러 수준을 가져올 수 있습니다. 그러한 경우, 많은 사람들은 이러한 불일치를 요인으로 변환하기 전에 문자로 관리하는 것을 선호합니다 (변환이 전혀 발생하지 않는 경우).

두 번째 경우 사용자가 문자 벡터로 작업한다고 생각하면 특정 메서드가 예상대로 응답하지 않을 수 있습니다. 이 기본적인 이해는 스크립트와 코드를 디버깅 할 때 혼동과 좌절을 초래할 수 있습니다. 엄밀히 말하자면 이것은 사용자의 잘못으로 간주 될 수 있지만 대부분의 사용자는 요인을 사용하지 않고 이러한 상황을 완전히 피할 수 있습니다.

요소의 기본 생성

요인은 R에서 범주 형 변수를 나타내는 한 가지 방법입니다. 요인은 내부적으로 정수 벡터 로 저장됩니다. 제공된 문자 벡터의 고유 한 요소를 요소의 수준 이라고합니다. 기본적으로 사용자가 레벨을 제공하지 않으면 R은 벡터에서 고유 한 값 집합을 생성하고이 값을 영숫자로 정렬 한 다음 레벨로 사용합니다.

 charvar <- rep(c("n", "c"), each = 3)
 f <- factor(charvar)
 f
 levels(f)

> f
[1] n n n c c c
Levels: c n
> levels(f)
[1] "c" "n"

레벨의 순서를 변경하려면 수동으로 레벨을 지정하는 한 가지 옵션이 있습니다.

levels(factor(charvar, levels = c("n","c")))

> levels(factor(charvar, levels = c("n","c")))
[1] "n" "c"

요소에는 여러 가지 특성이 있습니다. 예를 들어 레벨에 레이블을 지정할 수 있습니다.

> f <- factor(charvar, levels=c("n", "c"), labels=c("Newt", "Capybara"))
> f
[1] Newt     Newt     Newt     Capybara Capybara Capybara
Levels: Newt Capybara

할당 할 수있는 또 다른 속성은 요소가 정렬되었는지 여부입니다.

> Weekdays <- factor(c("Monday", "Wednesday", "Thursday", "Tuesday", "Friday", "Sunday", "Saturday"))
> Weekdays
[1] Monday    Wednesday Thursday  Tuesday   Friday    Sunday    Saturday 
Levels: Friday Monday Saturday Sunday Thursday Tuesday Wednesday
> Weekdays <- factor(Weekdays, levels=c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"), ordered=TRUE)
> Weekdays
[1] Monday    Wednesday Thursday  Tuesday   Friday    Sunday    Saturday 
Levels: Monday < Tuesday < Wednesday < Thursday < Friday < Saturday < Sunday

인수의 레벨이 더 이상 사용되지 않으면, 다음과 같이 droplevels() 함수를 사용하여 제거 할 수 있습니다.

> Weekend <- subset(Weekdays, Weekdays == "Saturday" |  Weekdays == "Sunday")
> Weekend
[1] Sunday   Saturday
Levels: Monday < Tuesday < Wednesday < Thursday < Friday < Saturday < Sunday
> Weekend <- droplevels(Weekend)
> Weekend
[1] Sunday   Saturday
Levels: Saturday < Sunday

요소 수준을 목록으로 통합

카테고리 중 하나의 데이터가 희박하기 때문에 요인 수준을 더 적은 수의 그룹으로 통합하는 것이 바람직 할 수 있습니다. 범주 이름의 철자 또는 대문자가 다를 때도 발생할 수 있습니다. 예를 들어 요인을 고려해보십시오.

set.seed(1)
colorful <- sample(c("red", "Red", "RED", "blue", "Blue", "BLUE", "green", "gren"),
                   size = 20,
                   replace = TRUE)
colorful <- factor(colorful)

R은 대소 문자를 구분하므로이 벡터의 주파수 테이블은 아래와 같이 나타납니다.

table(colorful)
colorful  
blue  Blue  BLUE green  gren   red   Red   RED  
   3     1     4     2     4     1     3     2

그러나이 표는 데이터의 실제 분포를 나타내지는 않으며 범주는 파란색, 녹색 및 빨간색의 세 가지 유형으로 효과적으로 축소 될 수 있습니다. 세 가지 예가 제공됩니다. 첫 번째는 분명한 해결책 인 것처럼 보이지만 실제로 해결책을 제시하지는 않습니다. 두 번째 방법은 작동하는 솔루션을 제공하지만 장황하고 계산 비용이 많이 듭니다. 세 번째는 분명한 해결책은 아니지만 비교적 작고 계산 상 효율적입니다.

factor ( factor_approach )를 사용하여 레벨 통합

factor(as.character(colorful),
       levels = c("blue", "Blue", "BLUE", "green", "gren", "red", "Red", "RED"),
       labels = c("Blue", "Blue", "Blue", "Green", "Green", "Red", "Red", "Red"))
 [1] Green Blue  Red   Red   Blue  Red   Red   Red   Blue  Red   Green Green Green Blue  Red   Green
[17] Red   Green Green Red  
Levels: Blue Blue Blue Green Green Red Red Red
Warning message:
In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels,  :
  duplicated levels in factors are deprecated

중복 된 수준이 있음을 유의하십시오. 우리는 여전히 레벨을 통합하는 우리의 임무를 완수하지 못하는 "블루"를위한 세 가지 범주를 가지고 있습니다. 또한 복제 된 수준이 더 이상 사용되지 않는다는 경고가 있습니다. 즉이 코드가 나중에 오류를 생성 할 수 있음을 의미합니다.

ifelse ( ifelse_approach )를 사용하여 레벨 통합

factor(ifelse(colorful %in% c("blue", "Blue", "BLUE"),
       "Blue",
       ifelse(colorful %in% c("green", "gren"),
              "Green",
              "Red")))
 [1] Green Blue  Red   Red   Blue  Red   Red   Red   Blue  Red   Green Green Green Blue  Red   Green
[17] Red   Green Green Red  
Levels: Blue Green Red

이 코드는 원하는 결과를 생성하지만 중첩 된 ifelse 문을 사용해야합니다. 이 접근법에는 아무런 문제가 없지만 중첩 된 ifelse 문을 관리하는 것은 지루한 작업 일 수 있으므로주의 깊게 수행해야합니다.

요소로 레벨을 목록으로 통합 ( list_approach )

레벨을 통합하는 덜 분명한 방법은 각 요소의 이름이 원하는 범주 이름이고 요소가 원하는 범주에 매핑해야하는 요소의 수준에 대한 문자 벡터 인 목록을 사용하는 것입니다. 이것은 새로운 객체를 할당하지 않고도 factor의 levels 속성에서 직접 작업한다는 부가적인 이점이 있습니다.

levels(colorful) <- 
     list("Blue" = c("blue", "Blue", "BLUE"),
          "Green" = c("green", "gren"),
          "Red" = c("red", "Red", "RED"))
 [1] Green Blue  Red   Red   Blue  Red   Red   Red   Blue  Red   Green Green Green Blue  Red   Green
[17] Red   Green Green Red  
Levels: Blue Green Red

각 접근 방식 벤치마킹

각 접근법을 실행하는 데 필요한 시간을 요약하면 다음과 같습니다. 공간을 위해이 요약을 생성하는 코드는 표시되지 않습니다.

Unit: microseconds
          expr     min      lq      mean   median      uq     max neval cld
        factor  78.725  83.256  93.26023  87.5030  97.131 218.899   100  b 
        ifelse 104.494 107.609 123.53793 113.4145 128.281 254.580   100   c
 list_approach  49.557  52.955  60.50756  54.9370  65.132 138.193   100 a

목록 접근법은 ifelse 접근법보다 두 배 빠릅니다. 그러나 매우 많은 양의 데이터가있는 경우를 제외하면 실행 시간의 차이는 마이크로 초 또는 밀리 초 단위로 측정됩니다. 이렇게 적은 시간 차이가 있어도 효율성은 어떤 접근 방식을 사용할 것인지 결정할 필요가 없습니다. 대신 친숙하고 편안한 방법을 사용하고 나중에 검토 할 때 귀하와 귀하의 공동 작업자가 이해할 수있는 방법을 사용하십시오.

요인

Factor 는 R에서 범주 형 변수를 표현하는 한 방법입니다. as.character() 사용하여 값을 문자로 변환 할 수있는 벡터 x 있는 경우 factor()as.factor() 의 기본 인수는 각 별개 요소에 정수를 할당합니다. 벡터뿐만 아니라 레벨 속성과 레이블 속성 레벨은 x 가 취할 수있는 값이고 레이블은 주어진 요소이거나 사용자가 결정할 수 있습니다.

예를 들어 요소가 작동하는 경우 기본 특성, 사용자 지정 수준, 사용자 지정 수준 및 레이블을 사용하여 요소를 만듭니다.

# standard
factor(c(1,1,2,2,3,3))
[1] 1 1 2 2 3 3
Levels: 1 2 3

팩터가 취할 수있는 가능한 값의 수가 현재 벡터 값보다 크다는 것을 사용자가 알고있는 경우 인스턴스가 발생할 수 있습니다. 이를 위해 factor() 에 레벨을 지정합니다.

factor(c(1,1,2,2,3,3),
         levels = c(1,2,3,4,5))
[1] 1 1 2 2 3 3
Levels: 1 2 3 4 5

스타일 목적으로 사용자는 각 레벨에 레이블을 지정할 수 있습니다. 기본적으로 레이블은 레벨의 문자 표현입니다. 여기서 우리는 요소의 가능한 각 레벨에 대한 레이블을 지정합니다.

factor(c(1,1,2,2,3,3),
       levels = c(1,2,3,4,5),
       labels = c("Fox","Dog","Cow","Brick","Dolphin"))
[1] Fox Fox Dog Dog Cow Cow
Levels: Fox Dog Cow Brick Dolphin

일반적으로 요소는 ==!= 및 요소가 같은 수준 인 경우에만 비교할 수 있습니다. 다음 요인들의 비교는 요소들이 서로 다른 요소 수준을 가지기 때문에 동일하게 보일지라도 실패합니다.

factor(c(1,1,2,2,3,3),levels = c(1,2,3)) == factor(c(1,1,2,2,3,3),levels = c(1,2,3,4,5))
Error in Ops.factor(factor(c(1, 1, 2, 2, 3, 3), levels = c(1, 2, 3)),  : 
  level sets of factors are different

이는 RHS의 추가 수준이 의미있는 방식으로 R을 비교하는 데 필요한 각 요소에 대한 충분한 정보가 없다는 것을 의미합니다.

< , <= , >>= 연산자는 정렬 된 요소에만 사용할 수 있습니다. 이들은 여전히 ​​선형 순서를 갖는 범주 적 값을 나타낼 수 있습니다. 정렬 된 인수는 ordered = TRUE 인수를 factor 함수에 제공하거나 ordered 함수를 사용하여 생성 할 수 있습니다.

x <- factor(1:3, labels = c('low', 'medium', 'high'), ordered = TRUE)
print(x)
[1] low    medium high  
Levels: low < medium < high

y <- ordered(3:1, labels = c('low', 'medium', 'high'))
print(y)
[1] high   medium low   
Levels: low < medium < high

x < y
[1]  TRUE FALSE FALSE

자세한 내용은 Factor 문서를 참조하십시오.

변경 및 재정렬 요인

요소가 기본값으로 작성되면 levels 은 입력에 적용되는 as.character 로 구성되며 사전 순으로 정렬됩니다.

charvar <- rep(c("W", "n", "c"), times=c(17,20,14))
f <- factor(charvar)
levels(f)
# [1] "c" "n" "W"

어떤 상황에서는 levels 의 기본 순서 (알파벳 / 어휘 순서)의 처리가 허용됩니다. 예를 들어, 주파수를 plot 하기를 원한다면, 이것은 결과 일 것입니다 :

plot(f,col=1:length(levels(f)))

여기에 이미지 설명을 입력하십시오.

그러나 다른 levels 순서를 원한다면 levels 이나 labels 매개 변수에서 지정해야합니다 (여기에서 "순서"의 의미는 순서가 지정된 요소와 다릅니다. 아래 참조). 상황에 따라이 작업을 수행하는 많은 대안이 있습니다.

1. 요인 재정의

가능하면 levels 매개 변수를 사용하여 원하는 순서대로 요소를 다시 만들 수 있습니다.

ff <- factor(charvar, levels = c("n", "W", "c"))
levels(ff)
# [1] "n" "W" "c"
 
gg <- factor(charvar, levels = c("W", "c", "n"))
levels(gg)
# [1] "W" "c" "n"

입력 레벨이 소정 출력 레벨과 다른 경우, 우리는 사용 labels 원인 파라미터 levels 허용 가능한 입력 값에 대한 "필터"가되는 파라미터를 이에 인수와 계수 벡터 "레벨"의 최종 값을 남긴다 labels :

fm <- factor(as.numeric(f),levels = c(2,3,1),
             labels = c("nn", "WW", "cc"))
levels(fm)
# [1] "nn" "WW" "cc"

fm <- factor(LETTERS[1:6], levels = LETTERS[1:4],  # only 'A'-'D' as input
                 labels = letters[1:4])            # but assigned to 'a'-'d'
fm
#[1] a    b    c    d    <NA> <NA>
#Levels: a b c d

2. relevel 함수 사용

첫 번째로 필요한 특정 level 이있을 때 우리는 relevel 을 사용할 수 있습니다. 예를 들어, 가설을 검증하기 위해 base 범주가 필요할 때 통계 분석의 맥락에서 발생합니다.

g<-relevel(f, "n") # moves n to be the first level
levels(g)
# [1] "n" "c" "W"  

확인할 수있는 바와 같이 fg 는 동일합니다.

all.equal(f, g)
# [1] "Attributes: < Component “levels”: 2 string mismatches >"
all.equal(f, g, check.attributes = F)
# [1] TRUE

3. 재정렬 요인

숫자, 부분 결과, 계산 된 통계 또는 이전 계산을 기준으로 levelsreorder 해야하는 경우가 있습니다. levels빈도 에 따라 순서를 바꾸자.

table(g)
# g
#  n  c  W 
# 20 14 17 

reorder 기능은 일반적이지만 help(reorder) 참조),이 문맥에서 다음을 필요로합니다 : x ,이 경우 factor; Xx 와 같은 길이의 숫자 값입니다. FUNX 적용되고 x 레벨에 의해 계산되는 함수로 levels 순서를 결정합니다. 기본적으로 증가합니다. 결과는 재정렬 된 레벨과 동일한 요소입니다.

g.ord <- reorder(g,rep(1,length(g)), FUN=sum) #increasing
levels(g.ord)
# [1] "c" "W" "n"

감소하는 차수를 구하기 위해 음의 값 ( -1 )

g.ord.d <- reorder(g,rep(-1,length(g)), FUN=sum)
levels(g.ord.d)
# [1] "n" "W" "c"

또 다른 요소는 다른 요소와 같습니다.

data.frame(f,g,g.ord,g.ord.d)[seq(1,length(g),by=5),] #just same lines
#    f g g.ord g.ord.d
# 1  W W     W       W
# 6  W W     W       W
# 11 W W     W       W
# 16 W W     W       W
# 21 n n     n       n
# 26 n n     n       n
# 31 n n     n       n
# 36 n n     n       n
# 41 c c     c       c
# 46 c c     c       c
# 51 c c     c       c

요인 변수 와 관련된 양적 변수 가있는 경우 다른 함수를 사용하여 levels 을 재정렬 할 수 levels . 자세한 내용은 iris 데이터 ( help("iris") 참조 help("iris") 를 가져 와서 Species 요소 Sepal.Width 를 사용하여 Species 요소를 재정렬 할 수 있습니다.

miris <- iris  #help("iris") # copy the data
with(miris, tapply(Sepal.Width,Species,mean))
#    setosa versicolor  virginica 
#     3.428      2.770      2.974 

miris$Species.o<-with(miris,reorder(Species,-Sepal.Width))
levels(miris$Species.o)
# [1] "setosa"     "virginica"  "versicolor"

일반적인 boxplot ( with(miris, boxplot(Petal.Width~Species) )은이 순서대로 내용을 보여줄 것입니다 : setosa , versicolor , virginica . 그러나 주문한 인자를 사용하여 우리는 평균 Sepal.Width :

boxplot(Petal.Width~Species.o, data = miris,
        xlab = "Species", ylab = "Petal Width",
        main = "Iris Data, ordered by mean sepal width", varwidth = TRUE,
        col = 2:4) 

여기에 이미지 설명을 입력하십시오.

또한 levels 이름을 변경하거나 그룹으로 결합하거나 새로운 levels 추가하는 것도 가능 levels . 이를 위해 동일한 이름 levels 의 기능을 사용합니다.

f1<-f
levels(f1)
# [1] "c" "n" "W"
levels(f1) <- c("upper","upper","CAP") #rename and grouping
levels(f1)
# [1] "upper" "CAP" 

f2<-f1
levels(f2) <- c("upper","CAP", "Number") #add Number level, which is empty
levels(f2)
# [1] "upper"  "CAP"    "Number"
f2[length(f2):(length(f2)+5)]<-"Number" # add cases for the new level
table(f2)
# f2
#  upper    CAP Number 
#     33     17      6 

f3<-f1
levels(f3) <- list(G1 = "upper", G2 = "CAP", G3 = "Number") # The same using list
levels(f3)
# [1] "G1" "G2" "G3"
f3[length(f3):(length(f3)+6)]<-"G3" ## add cases for the new level
table(f3)
# f3
# G1 G2 G3 
# 33 17  7 

- 주문 요인

마지막으로 우리는 ordered 요소가 요인과 다르다는 것을 알고 있습니다. 첫 번째 factors순서 데이터 를 나타내는 데 사용되고 두 번째 요소는 공칭 데이터로 사용 됩니다. 처음에는 순서 변경 의미하지 않는 levels 주문 요인을하지만, 우리는 그 변경할 수 있습니다 labels .

ordvar<-rep(c("Low", "Medium", "High"), times=c(7,2,4))

of<-ordered(ordvar,levels=c("Low", "Medium", "High"))
levels(of)
# [1] "Low"    "Medium" "High" 

of1<-of
levels(of1)<- c("LOW", "MEDIUM", "HIGH")
levels(of1)
# [1] "LOW"    "MEDIUM" "HIGH"
is.ordered(of1)
# [1] TRUE
of1
# [1] LOW    LOW    LOW    LOW    LOW    LOW    LOW    MEDIUM MEDIUM HIGH   HIGH   HIGH   HIGH  
# Levels: LOW < MEDIUM < HIGH

0에서 요인 재건

문제

요인은 R 단위의 수준으로 알려진 일련의 범주에서 값을 취하는 변수를 나타내는 데 사용됩니다. 예를 들어 일부 실험은 네 가지 수준 (빈 상태, 낮음, 보통 및 높음)으로 배터리의 에너지 수준을 특징으로 할 수 있습니다. 그런 다음 5 개의 다른 샘플링 사이트에 대해 다음과 같이 해당 레벨을 식별 할 수 있습니다.

전체 , 전체 , 보통 , , 낮음

일반적으로 데이터베이스 또는 기타 정보 소스에서 이러한 데이터를 처리하는 것은 범주 또는 수준과 관련된 임의의 정수 인덱스를 사용합니다. 주어진 예제의 경우, 1 = 빈, 2 = 낮음, 3 = 보통, 4 = 가득 차면 5 개의 샘플을 다음과 같이 코딩 할 수 있다고 가정하면 :

4 , 4 , 3 , 1 , 2

정보 소스 (예 : 데이터베이스)에서 인코딩 된 정수 목록 만 있고 각 정수를 각 수준 키워드와 연관시키는 카탈로그가있을 수 있습니다. 어떻게 R의 요소가 그 정보로부터 재구성 될 수 있습니까?

해결책

우리는 샘플을 나타내는 20 개의 정수 벡터를 시뮬 레이팅 할 것입니다. 각각의 샘플은 네 가지 다른 값 중 하나를 가질 수 있습니다.

set.seed(18)
ii <- sample(1:4, 20, replace=T)
ii

[1] 4 3 4 1 1 3 2 3 2 1 3 4 1 2 4 1 3 1 4 1

첫 번째 단계는 이전 순서에서 수준 또는 카테고리가 정확하게 1에서 4까지의 숫자 인 요소를 만드는 것입니다.

fii <- factor(ii, levels=1:4) # it is necessary to indicate the numeric levels
fii

[1] 4 3 4 1 1 3 2 3 2 1 3 4 1 2 4 1 3 1 4 1
레벨 : 1 2 3 4

이제 간단히 인덱스 태그로 이미 작성된 요소를 입어야 합니다.

levels(fii) <- c("empty", "low", "normal", "full")
fii

[1] 전체 정상 완전 공백 비 정상 정상 낮음 정상 낮음 낮음
[11] 보통 전체 빈 낮음 전체 빈 보통 일반 빈 전체 빈
레벨 : 빈 낮음 보통 보통 전체



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow