Message-ID: <1359070622.37119.YahooMailNeo@web142606.mail.bf1.yahoo.com>
Date: 2013-01-24T23:37:02Z
From: arun
Subject: ifelse to speed up loop?
In-Reply-To: <CAJV2n4pQYE7FCGj1HAeBFvjH7AH6VY1ypXg1r1RXBw9Ke6K3_w@mail.gmail.com>
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.