[R] Calculating First Occurance by a factor
Mike Lawrence
Mike.Lawrence at dal.ca
Mon Mar 30 21:58:54 CEST 2009
I discovered Hadley Wickham's "plyr" package last week and have found
it very useful in circumstances like this:
library(plyr)
firstfixtime = ddply(
.data = data
, .variables = c('Sub','Tr','IA')
, .fun <- function(df){
df$FixTime[which.min(df$FixInx)]
}
)
> On Mon, Mar 30, 2009 at 3:40 PM, jwg20 <jason.gullifer at gmail.com> wrote:
>>
>> I'm having difficulty finding a solution to my problem that without using a
>> for loop. For the amount of data I (will) have, the for loop will probably
>> be too slow. I tried searching around before posting and couldn't find
>> anything, hopefully it's not embarrassingly easy.
>>
>> Consider the data.frame, Data, below
>>
>> Data
>> Sub Tr IA FixInx FixTime
>> p1 t1 1 1 200
>> p1 t1 2 2 350
>> p1 t1 2 3 500
>> p1 t1 3 4 600
>> p1 t1 3 5 700
>> p1 t1 4 6 850
>> p1 t1 3 7 1200
>> p1 t1 5 8 1350
>> p1 t1 5 9 1500
>>
>> What I'm trying to do is for each unique IA get the first occurring FixTime.
>> This will eventually need to be done by each Trial (Tr) and each Subject
>> Number (Sub). FixInx is essentially the number of rows in a trial. The
>> resulting data.frame is below.
>>
>> Sub Tr IA FirstFixTime
>> p1 t1 1 200
>> p1 t1 2 350
>> p1 t1 3 600
>> p1 t1 4 850
>> p1 t1 5 1350
>>
>> Here is the solution I have now.
>>
>> agg = aggregate(data$FixInx, list(data$Sub, data$Tr, data$IA), min) #get the
>> minimum fix index by Sub, Tr, and IA... I can use this min fix index to pull
>> out the desired fixtime
>>
>> agg$firstfixtime = 0 # new column for results
>>
>> for (rown in 1:length(rownames(agg))){ #cycle through rows and get each
>> data$firstfixtime from FixTime in matching rows
>> agg$firstfixtime[rown] = as.character(data[data$Tr == agg$Group.2[rown] &
>> data$Sub == agg$Group.1[rown] & data$IA == agg$Group.3[rown] & data$FixInx
>> == agg$x[rown], ]$FixTime)
>> }
>> --
>> View this message in context: http://www.nabble.com/Calculating-First-Occurance-by-a-factor-tp22789964p22789964.html
>> Sent from the R help mailing list archive at Nabble.com.
>>
>> ______________________________________________
>> 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.
>>
--
Mike Lawrence
Graduate Student
Department of Psychology
Dalhousie University
Looking to arrange a meeting? Check my public calendar:
http://tinyurl.com/mikes-public-calendar
~ Certainty is folly... I think. ~
More information about the R-help
mailing list