3

ベクトルには 2 つしかないことがわかるのに、levels() が 3 つの因子レベルを示す理由を誰か説明できますか?

> str(walk.df)
'data.frame':   10 obs. of  4 variables:
 $ walker : Factor w/ 3 levels "1","2","3": 1 1 1 1 1 2 2 2 2 2

> walk.df$walker
 [1] 1 1 1 1 1 2 2 2 2 2
Levels: 1 2 3

レベルのベクトルを抽出したいのですが、これが適切な方法だと思いましたが、ご覧のとおり、そこに 3 つのスニークがあり、機能が台無しになっています。

> as.numeric(levels(walk.df$walker))
[1] 1 2 3
4

2 に答える 2

9

おそらく walk.df は、3 つのレベルを持つ因子変数のサブセットです。いう、

a<-factor(1:3)
b<-a[1:2]

b には 3 つのレベルがあります。

余分なレベルを落とす簡単な方法は次のとおりです。

b<-a[1:2, drop=T]

元の変数にアクセスできない場合は、

b<-factor(b)
于 2010-05-03T08:56:31.620 に答える
0

2 つの水準を含む因子に複数の因子水準を割り当てることができます。

 > set.seed(1234)
 > x <- round(runif(10, 1, 2))
 > x
  [1] 1 2 2 2 2 2 1 1 2 2
 > y <- factor(x)
 > levels(y)
 [1] "1" "2"
 > levels(y) <- c("1", "2", "3")
 > y
  [1] 1 2 2 2 2 2 1 1 2 2
 Levels: 1 2 3

またはまったくレベルがありません:

 > p <- NA
 > q <- factor(p)
 > levels(q)
 character(0)
 > levels(q) <- c("1", "2", "3")
 > q
 [1] <NA>
 Levels: 1 2 3
于 2010-05-03T19:50:21.097 に答える