Hi,

It's a good idea to copy back to the list, not just to mo, to keep the
discussion all in one place.

On Thursday, June 26, 2014, VINCENT DEAN BOYCE <vincentdeanbo...@gmail.com>
wrote:

> Sarah,
>
> Great feedback and direction. Here is the data I am working with*:
>
> > dput(head(data_log, 20))
>
> structure(list(x_reading = c(455L, 451L, 458L, 463L, 462L, 460L,
> 448L, 449L, 450L, 451L, 445L, 440L, 439L, 445L, 448L, 447L, 440L,
> 439L, 440L, 434L), y_reading = c(502L, 503L, 502L, 502L, 495L,
> 505L, 480L, 483L, 489L, 488L, 489L, 456L, 497L, 476L, 470L, 474L,
> 469L, 482L, 484L, 477L), z_reading = c(454L, 454L, 452L, 452L,
> 446L, 459L, 456L, 451L, 451L, 455L, 438L, 462L, 437L, 455L, 470L,
> 455L, 460L, 463L, 458L, 458L)), .Names = c("x_reading", "y_reading",
> "z_reading"), row.names = c(NA, 20L), class = "data.frame")
>
> *however, I am unsure why the letter "L" has been appended to each
> numerical string.
>

It denotes values stored as integers, and is nothing you need to worry
about.


> In any event, as you can see there are three columns of data named
> x_reading, y_reading and z_reading. I would like to detect patterns among
> them.
>
> For instance, let's say the pattern I wish to detect is 455, 502, 454
> across the three columns respectively. As you can see in the data, this is
> found in the first row.This particular string reoccurs numerous times
> within the dataset is what I wish to quantify - how many times the string
> 455, 502, 454 appears.
>
> Your thoughts?
>

Did you try the code I provided? It does what I think you're looking for.

Sarah


> Many thanks,
>
> Vincent
>
>
> On Thu, Jun 26, 2014 at 4:46 PM, Sarah Goslee <sarah.gos...@gmail.com
> <javascript:_e(%7B%7D,'cvml','sarah.gos...@gmail.com');>> wrote:
>
>> Hi,
>>
>> On Thu, Jun 26, 2014 at 12:17 PM, VINCENT DEAN BOYCE
>> <vincentdeanbo...@gmail.com
>> <javascript:_e(%7B%7D,'cvml','vincentdeanbo...@gmail.com');>> wrote:
>> > Hello,
>> >
>> > Using R,  I've loaded a .cvs file comprised of several hundred rows and
>> 3
>> > columns of data. The data within maps the output of a triaxial
>> > accelerometer, a sensor which measures an object's acceleration along
>> the
>> > x,y and z axes. The data for each respective column sequentially
>> > oscillates, and ranges numerically from 100 to 500.
>>
>> If your data are numeric, why are you using stringr?
>>
>> It would be easier to provide you with an answer if we knew what your
>> data looked like.
>>
>> dput(head(yourdata, 20))
>>
>> and paste that into your non-HTML email.
>>
>> > I want create a function that parses the data and detects patterns
>> across
>> > the three columns.
>> >
>> > For instance, I would like to detect instances when the values for the
>> x,y
>> > and z columns equal 150, 200, 300 respectively. Additionally, when a
>> match
>> > is detected, I would like to know how many times the pattern appears.
>>
>> That's easy enough:
>>
>> fakedata <- data.frame(matrix(c(
>> 100, 100, 200,
>> 150, 200, 300,
>> 100, 350, 100,
>> 400, 200, 300,
>> 200, 500, 200,
>> 150, 200, 300,
>> 150, 200, 300),
>> ncol=3, byrow=TRUE))
>>
>> v.to.match <- c(150, 200, 300)
>>
>> v.matches <- apply(fakedata, 1, function(x)all(x == v.to.match))
>>
>> # which rows match
>> which(v.matches)
>>
>> # how many rows match
>> sum(v.matches)
>>
>> > I have been successful using str_detect to provide a Boolean, however it
>> > seems to only work on a single vector, i.e, "400" , not a range of
>> values
>> > i.e "400 - 450". See below:
>>
>> This is where I get confused, and where we need sample data. Are your
>> data numeric, as you state above, or some other format?
>>
>> If your data are character, and like "400 - 450", you can still match
>> them with the code I suggested above.
>>
>> > # this works
>> >> vals <- str_detect (string = data_log$x_reading, pattern = "400")
>> >
>> > # this also works, but doesn't detect the particular range, rather the
>> > existence of the numbers
>> >> vals <- str_detect (string = data_log$x_reading, pattern = "[400-450]")
>>
>> Are you trying to match any numeric value in the range 400-450? Again,
>> actual data.
>>
>> > Also, it appears that I can only apply it to a single column, not to all
>> > three columns. However I may be mistaken.
>>
>> You answer your own question unwittingly - apply().
>>
>> Sarah
>>
>> --
>> Sarah Goslee
>> http://www.functionaldiversity.org
>>
>
>

-- 
Sarah Goslee
http://www.stringpage.com
http://www.sarahgoslee.com
http://www.functionaldiversity.org

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to