1

私は問題があります。

0 または 1 から構成されるベクトルがあります。たとえば、(011011111011100001111) です。R では、ベクトル 2 1、3 1、4 1 などに出現する回数を数える方法を理解する必要があります。この例のベクトルには、11 の 1 倍、111 の 1 倍、1111 の 1 倍、11111 の 1 倍があります。

どうもありがとう、ピーター

4

2 に答える 2

4

のような実際のベクトルがあると仮定していますc(0, 1, 1, 0...)

tableと を使用したソリューションを次に示しrleます。また、もう少し興味深いものにするために、いくつかの長いサンプル データも提供しました。

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文字ベクトルでも使用できます。

于 2013-04-17T10:11:52.703 に答える
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
于 2013-04-17T10:12:52.857 に答える