Message-ID: <971536df0904050310l16a16780ned165f29b891f1f3@mail.gmail.com>
Date: 2009-04-05T10:10:11Z
From: Gabor Grothendieck
Subject: Filling in Gapped Interval of a Data Frame As Series
In-Reply-To: <73f827b50904050022w492c5a64n32b037a290c68a74@mail.gmail.com>
Try this:
> library(zoo)
> Lines <- "-8 100
+ -6 20.2
+ -1 1.5
+ 2 3.00
+ 3 78.8
+ 5 33.2
+ 6 44.5
+ 7 5.00"
> DF <- read.table(textConnection(Lines))
> z <- zoo(DF$V2, DF$V1)
> zz <- merge(z, zoo(, seq(min(time(z)), max(time(z)))), fill = 0); zz
-8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4
100.0 0.0 20.2 0.0 0.0 0.0 0.0 1.5 0.0 0.0 3.0 78.8 0.0
5 6 7
33.2 44.5 5.0
If you want to create a data frame from that try this:
newDF <- data.frame(Time = time(zz), Value = coredata(zz))
although you might be best off to just leave it as a zoo object
so that you can make use of other zoo methods too.
> plot(zz, type = "o")
See the three zoo vignettes (PDF documents) for more info.
On Sun, Apr 5, 2009 at 3:22 AM, Gundala Viswanath <gundalav at gmail.com> wrote:
> Dear all,
>
> I have a data frame that looks like this:
>
>> dat
> ? ?V1 ? ? V2
> 1 ?-8 ? ? ?100
> 2 ?-6 ? ? ?20.2
> 3 ?-1 ? ? ?1.5
> 4 ? 2 ? ? ?3.00
> 5 ? 3 ? ? ?78.8
> 6 ? 5 ? ? ?33.2
> 7 ? 6 ? ? ?44.5
> 8 ? 7 ? ? 5.00
>
> Now I want to fill the V1 column ?in series (note that it is gapped),
> with the corresponding value in V2 as 0.
>
> So in the end we would like to have:
>
>> newdat
> ? ?V1 ? ? V2
> 1 ? -8 ? ? ?100
> 2 ? -6 ? ? ?20.2
> 3 ? -7 ? ? ?0
> 4 ? -6 ? ? ?0
> 5 ? -5 ? ? ?0
> 6 ? ?-4 ? ? 0
> 7 ? ?-3 ? ? 0
> 8 ? ?-2 ? ? 0
> 9 ? ?-1 ? ? 1.5
> 10 ? ?0 ? ? 0
> 11 ? ?1 ? ? 0
> 12 ? 2 ? ? ?3.00
> 13 ? 3 ? ? ?78.8
> 14 ? 4 ? ? ?0
> 15 ? 5 ? ? ?33.2
> 16 ? 6 ? ? ?44.5
> 17 ? 7 ? ? ?5.00
>
> Is there a way to do it in R?
> - Gundala Viswanath
> Jakarta - Indonesia
>
> ______________________________________________
> 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.
>