在提取R中的最常见因子时将值保持为一个因素

时间:2014-06-24 23:28:02

标签: r

我可以使用table()levels()name()按照here解释,在表格中获得最常见的因素级别或名称,但我怎样才能获得因素本身?

> a <- ordered (c("a", "b", "c", "b", "c", "b", "a", "c", "c"))
> tt <- table(a)
> m = names(which.max(tt)) # what do I put here? 
> is.factor(m)
[1] FALSE # I want this to be TRUE and for m to be identical a[3]

当然,这只是一个例子。我真正想要做的是对因素的大量操纵和聚合,我只想保持所有变量的因子一致。我不希望他们更改级别或订单或丢弃级别,因为没有数据。

1 个答案:

答案 0 :(得分:3)

目前还不清楚你到底想要什么。如果您想要一个长度为4且与a具有相同级别的因子向量:

 m = a[ a %in% names(which.max(tt)) ]

对于一个长度为一的向量,请执行与上面相同的操作,然后选择第一个向量:

m = a[ a %in% names(which.max(tt)) ][1]
m
#--------
[1] c
Levels: a < b < c
> m == a[3]
[1] TRUE

如果你想要一个相同长度的矢量,那么:

 m <- a
 is.na(m) <- ! m %in% names(which.max(tt))