Skip to content
Back to formatted view

Raw Message

Message-ID: <AANLkTik5H9Yw_MNiX7tMQAG_+SK48j2tT+FbBo0R-Sg+@mail.gmail.com>
Date: 2011-01-16T17:47:13Z
From: Hadley Wickham
Subject: data prep question
In-Reply-To: <1BDAE2969943D540934EE8B4EF68F95FB27A48C274@EXNSW-MBX03.nexus.csiro.au>

On Sun, Jan 16, 2011 at 5:48 AM,  <Bill.Venables at csiro.au> wrote:
> Here is one way
>
> Here is one way:
>
>> con <- textConnection("
> + ID ? ? ? ? ? ? ?TIME ? ?OBS
> + 001 ? ? ? ? ? ? 2200 ? ?23
> + 001 ? ? ? ? ? ? 2400 ? ?11
> + 001 ? ? ? ? ? ? 3200 ? ?10
> + 001 ? ? ? ? ? ? 4500 ? ?22
> + 003 ? ? ? ? ? ? 3900 ? ? 45
> + 003 ? ? ? ? ? ? 5605 ? ? 32
> + 005 ? ? ? ? ? ? 1800 ? ?56
> + 005 ? ? ? ? ? ? 1900 ? ?34
> + 005 ? ? ? ? ? ? 2300 ? ?23")
>> dat <- read.table(con, header = TRUE,
> + colClasses = c("factor", "numeric", "numeric"))
>> closeAllConnections()
>>
>> tmp <- lapply(split(dat, dat$ID),
> + function(x) within(x, TIME <- TIME - min(TIME)))
>> split(dat, dat$ID) <- tmp

Or, in one line with ddply:

library(plyr)
ddply(dat, "ID", transform, TIME = TIME - min(TIME))

Hadley

-- 
Assistant Professor / Dobelman Family Junior Chair
Department of Statistics / Rice University
http://had.co.nz/