[R] Calculating First Occurance by a factor
jwg20
jason.gullifer at gmail.com
Wed Apr 1 17:56:19 CEST 2009
I have another question regarding ddply. In my actual data.frame, I have many
other column variables corresponding to the type of the trial. I'm wondering
if I can have ddply include those in firstfixtime as well.
I tried messing with the line df$FixTime[which.min(df$FixInx)] changing it
to df[which.min(df$FixInx)] or adding new lines with the additional columns
that I want to include, but nothing seemed to work. I'll admit I only have a
mild understanding of what is going on with the function .fun. :-)
Mike Lawrence wrote:
>
> 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. ~
>
> ______________________________________________
> 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.
>
>
--
View this message in context: http://www.nabble.com/Calculating-First-Occurance-by-a-factor-tp22789964p22829525.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list