Skip to content
Prev 316088 / 398502 Next

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]]

______________________________________________
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.