2016-06-10 27 views
-1

我有一個因子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

不要使用' F'作爲變量名稱。它被R用作'FALSE'的替代品,如果您嘗試將它用於任何其他目的,您可能會冒着令人討厭的驚喜! –

+0

對不起,你是對的 – Lorina86

回答

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 
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 
1

你可以試試這個:

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

輸出

[1] 4 3 1 3 4 4 4 3 
相關問題