-----Original Message-----
From: tmrsg11 at gmail.com
Sent: Sat, 20 Jul 2013 13:11:47 -0400
To: jrkrideau at inbox.com
Subject: Re: [R] How to search for a sequence(and its combination) inside
a vector?
Thanks John.
Why do I get length of 5 and 6? I thought I am only tallying up 1 to 3?
val
leng TRUE
1 5
2 4
3 81
5 1
6 4
-M
On Sat, Jul 20, 2013 at 12:52 PM, John Kane <jrkrideau at inbox.com> wrote:
Taking Berend's example a bit further, this seems to work
If you use str(b) you will see it is a list
b <- rle(a)
cc <- data.frame(b[[1]], b[[2]])
names(cc) <- c("leng", 'val')
dd <- subset(cc, val ==TRUE )
table(dd)
John Kane
Kingston ON Canada
-----Original Message-----
From: tmrsg11 at gmail.com
Sent: Sat, 20 Jul 2013 12:36:55 -0400
To: bhh at xs4all.nl
Subject: Re: [R] How to search for a sequence(and its combination)
inside
a vector?
Hi Berend
I am looking for a table,
# of times one element (out of 1, 2, 3) showed up, two elements, and
all
three.
I am trying, don't know if this works:
aa <- rle(a)
b <- aa$lengths[aa$values]
table(b)
b
1 3
3 12
Mike
On Sat, Jul 20, 2013 at 12:24 PM, Berend Hasselman <bhh at xs4all.nl>
wrote:
On 20-07-2013, at 18:05, C W <tmrsg11 at gmail.com> wrote:
Hi R list,
I have a sequence repeating 1:15 . Some numbers are deleted. I want
to find how many times 1, 2, 3 appeared.
Basically, I want to "grab" the beginning of the sequence and tally
it
up.
R code:
vec <- c(1, 2, 3, 4, 5, 6, 7, 8, 13, 1, 2, 3, 5, 7, 8, 10, 12, 13,
14,
15, 1, 2, 3, 5, 6, 10, 12, 13, 1, 2, 3, 4, 5, 6, 7, 12, 13, 14,
15, 1, 2, 3, 6, 9, 10, 11, 13, 14, 1, 7, 10, 13, 1, 2, 3, 4,
6, 7, 9, 11, 14, 1, 2, 3, 5, 9, 10, 11, 12, 14, 1, 2, 3, 4, 1,
2, 3, 4, 11, 12, 14, 1, 2, 3, 4, 8, 11, 12, 1, 2, 3, 4, 5, 7,
8, 9, 11, 12, 15, 3, 14, 1, 2, 3, 6, 10, 11, 13, 14, 1)
a <- vec %in% c(1, 2, 3)
a
[1] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
TRUE TRUE FALSE FALSE
[15] FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE FALSE
FALSE FALSE FALSE FALSE
[29] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
FALSE TRUE TRUE TRUE
[43] FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
TRUE TRUE TRUE FALSE
[57] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE FALSE FALSE
FALSE FALSE FALSE FALSE
[71] TRUE TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE FALSE
FALSE TRUE TRUE TRUE
[85] FALSE FALSE FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE
FALSE FALSE FALSE FALSE
[99] FALSE TRUE FALSE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
FALSE
TRUE
Run Length Encoding
lengths: int [1:29] 3 6 3 8 3 5 3 8 3 6 ...
values : logi [1:29] TRUE FALSE TRUE FALSE TRUE FALSE ...
What should I do after this?
Well how about
sum(a)
or
b <- rle(a)
sum(b$lengths[b$values])
Berend