如何创建具有因子水平频率的向量?

时间:2016-06-10 11:08:29

标签: r

我有一个因子F.我需要创建一个F长度相同的向量V,其中有因子级别的频率值。 例如:

F <- factor(c("a","b","c","b","a","a","a","b"))

table(F)
F
a b c 
4 3 1 

V应该是:

V
[1] 4 3 1 3 4 4 4 3

3 个答案:

答案 0 :(得分:5)

我们可以使用ave

ave(seq_along(X), X, FUN = length)
#[1] 4 3 1 3 4 4 4 3

或使用table本身

as.vector(table(X)[X])
#[1] 4 3 1 3 4 4 4 3

答案 1 :(得分:4)

x <- c("a","b","c","b","a","a","a","b")

然后,根据您是否希望命名输出,

table(x)[x]
# x
# a b c b a a a b 
# 4 3 1 3 4 4 4 3 
c(table(x)[x])
# a b c b a a a b 
# 4 3 1 3 4 4 4 3 
as.numeric(table(x)[x])
# [1] 4 3 1 3 4 4 4 3
unname(table(x)[x])
# [1] 4 3 1 3 4 4 4 3

答案 2 :(得分:1)

你可以试试这个:

t=table(F)
as.numeric(sapply(1:length(F), function(i) t[F[i]]))

<强>输出

[1] 4 3 1 3 4 4 4 3