我有一個因子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
我有一個因子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
我們可以使用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
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
你可以試試這個:
t=table(F)
as.numeric(sapply(1:length(F), function(i) t[F[i]]))
輸出
[1] 4 3 1 3 4 4 4 3
不要使用' F'作爲變量名稱。它被R用作'FALSE'的替代品,如果您嘗試將它用於任何其他目的,您可能會冒着令人討厭的驚喜! –
對不起,你是對的 – Lorina86