我有一个因子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
答案 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