-----Original Message-----
From: arun [mailto:smartpink111 at yahoo.com]
Sent: Thursday, January 24, 2013 3:53 PM
To: William Dunlap
Cc: R help
Subject: Re: [R] ifelse to speed up loop?
Hi,
I guess you meant:
c(TRUE, cumsum( v[-length(v)] != v[-1] ))
?[1] 1 0 0 1 1 1 2 2 2 3 3 3
this:
?cumsum(c(TRUE, v[-length(v)] != v[-1] ))
# [1] 1 1 1 2 2 2 3 3 3 4 4 4
A.K.
----- Original Message -----
From: William Dunlap <wdunlap at tibco.com>
To: arun <smartpink111 at yahoo.com>; Jeffrey Fuerte <fuertejn at vcu.edu>
Cc: R help <r-help at r-project.org>
Sent: Thursday, January 24, 2013 6:48 PM
Subject: RE: [R] ifelse to speed up loop?
I like
? v <- test[,1]
? c(TRUE, cumsum( v[-length(v)] != v[-1] ))
(R's arithmetic on logicals treats TRUE as 1 and FALSE as 0.)
Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf
Of arun
Sent: Thursday, January 24, 2013 3:37 PM
To: Jeffrey Fuerte
Cc: R help
Subject: Re: [R] ifelse to speed up loop?
HI,
This might be better.
test$group<-cumsum(abs(c(1,diff(test[,1]))))
A.K.
----- Original Message -----
From: Jeffrey Fuerte <fuertejn at vcu.edu>
To: r-help at r-project.org
Cc:
Sent: Thursday, January 24, 2013 4:20 PM
Subject: [R] ifelse to speed up loop?
Hello,
I'm not sure how to explain what I'm looking for but essentially I have a
test dataset that looks like this:
test:
?? V1
1?? 1
2?? 1
3?? 1
4?? 2
5?? 2
6?? 2
7?? 1
8?? 1
9?? 1
10? 2
11? 2
12? 2
And what I want to be able to do is create another column that captures a
"grouping" variable that looks like this:
test
?? V1 group
1?? 1? 1
2?? 1? 1
3?? 1? 1
4?? 2? 2
5?? 2? 2
6?? 2? 2
7?? 1 3
8?? 1? 3
9?? 1? 3
10? 2? 4
11? 2? 4
12? 2? 4
So, it's keeping track of the changes in V1, but even though V1 could be
the same in different instances, the group is treating it as a new group.
I have written a loop that does what I want, but this takes too long to
run, so I was hoping for either a faster approach or an ifelse statement.
Any ideas?
By the loop I was using looks like this:
groupings <- 1
test$group[1] <- groupings
for (i in 2:length(test$V1))
{
if (test$V1[i]==test$V1[i-1])
{
test$group[i] <- groupings
} else {
groupings <- groupings+1
test$group[i] <- groupings
}
}
Thanks for the help.
??? [[alternative HTML version deleted]]