[R] Taking diff of character vectors

Sergey Goriatchev sergeyg at gmail.com
Fri Mar 13 12:48:57 CET 2009


Fabulous, guys!

Let me try your suggestions.

Thanks a lot!

Best,
SErgey

On Fri, Mar 13, 2009 at 11:53,  <markleeds at verizon.net> wrote:
> Hi:
> For A, you can use head and tail but you have to add a zero the front.
> For B, you can use the same function, but put it inside an sapply and run
> over the columns and then cbind it back with the original dataframe.
> A)
> nm2 <- c(rep("SPZ8", 10), rep("SPX9", 10))
> -1.0*c(0,as.numeric((head(nm2,-1) != tail(nm2,-1))))
>
> B)
> nm3 <- c(rep("GLF9", 4), rep("GLF10", 16))
> matr <- cbind(nm2, nm3)
> temp<-as.data.frame(sapply(1:ncol(matr), function(.col) {
> -1.0*c(0,as.numeric((head(matr[,.col],-1) != tail(matr[,.col],-1))))
> }))
> cbind(matr,temp)
>
>
>
> On Fri, Mar 13, 2009 at  5:24 AM, Sergey Goriatchev wrote:
>> Hello, everybody
>>
>> Say I have
>> nm1 <- c(rep(1,10), rep(0,10))
>> then I can do:
>> diff(nm1)
>> to see where I have shift in value
>>
>> but what if I have
>> nm2 <- c(rep("SPZ8", 10), rep("SPX9", 10))
>>
>> how can I produce the same ouput as diff(nm1) does, that is zeros
>> everywhere except for one place where SPZ8 changes to SPX9 (there
>> should be 1 there)?
>>
>> What if I have a matrix of characters like that:
>> nm3 <- c(rep("GLF9", 4), rep("GLF10", 16))
>> matr <- cbind(nm2, nm3)
>>
>> How can I efficiently create two more columns that contain zeros
>> everywhere except for place where there is shift in character values?
>>
>> Thanks for help!
>> Sergey
>>
>> --
>> I'm not young enough to know everything. /Oscar Wilde
>> Experience is one thing you can't get for nothing. /Oscar Wilde
>> When you are finished changing, you're finished. /Benjamin Franklin
>> Tell me and I forget, teach me and I remember, involve me and I learn.
>> /Benjamin Franklin
>> Luck is where preparation meets opportunity. /George Patten
>>
>> ______________________________________________
>> R-help at 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.



-- 
I'm not young enough to know everything. /Oscar Wilde
Experience is one thing you can't get for nothing. /Oscar Wilde
When you are finished changing, you're finished. /Benjamin Franklin
Tell me and I forget, teach me and I remember, involve me and I learn.
/Benjamin Franklin
Luck is where preparation meets opportunity. /George Patten




More information about the R-help mailing list