2013-04-17 19 views
1

我遇到問題。向量中出現一對的次數爲

我有一個向量,它由0或1組成 - 例如(011011111011100001111)。在R我需要弄清楚,如何計算向量中出現了多少次1,3,1,4,1等等。在這個例子中矢量我有1次11,1次111,1次1111倍和1倍11111

非常感謝,彼得

回答

4

我假設你有一個像c(0, 1, 1, 0...)的實際載體。

以下是使用tablerle的解決方案。我還提供了一些更長的樣本數據,使其更有趣。

set.seed(1) 
myvec <- sample(c(0, 1), 100, replace = TRUE) 
temp <- rle(myvec) 
table(temp$lengths[temp$values == 1]) 
# 
# 1 2 3 4 6 
# 15 8 1 2 1 

事實上,如果你正在處理1和0的瘋狂長的字符串,只需使用strsplit並按照相同的邏輯之上。

myvec <- "00110111100010101101101000001001001110101111110011010000011010001001" 
myvec <- as.numeric(strsplit(myvec, "")[[1]]) 

在這裏,我已經轉換爲數字,但這就是所以你可以使用相同的代碼。你也可以在角色矢量上使用rle

+0

感謝很多答案,但我仍然不知道該怎麼做我自己....以前我要求幫助一個載體,我想我將能夠在矩陣上做到這一點......但我不是......所以我再次問一次......如果我已經平方矩陣它現在會如何工作? ...再次我需要數字11,但在這個矩陣的每個對角線.... –

2

rle是你的朋友:

vec <-c(0,1,1,0,1,1,1,1,1,0,1,1,1,0,0,0,0,1,1,1,1) 
res <-data.frame(table(rle(vec))) 
res[res$values==1,] 

    lengths values Freq 
6  1  1 0 
7  2  1 1 
8  3  1 1 
9  4  1 1 
10  5  1 1 
相關問題