[R] How can we creat conditional data frame
Gabor Grothendieck
ggrothendieck at gmail.com
Fri Apr 4 14:25:25 CEST 2008
Have a look at the zoo package. After reading
in the data its only 2 lines of code.
Note that zoo objects can be numeric or
factor but not both so we have represented
the day of the week as 1 for Mon, etc.
in the final object. You could convert it
to a data frame at the end if you really
need to combine factors or strings and
numerics in one object.
Lines.r <- "d r
2000-01-03 1.2105865
2000-01-05 -0.8962776
2000-01-19 -1.0438936
2000-01-28 2.1329387
"
Lines.date <- "ab c
2000-01-03 Mon
2000-01-04 Tue
2000-01-05 Wed
2000-01-06 Thu
2000-01-07 Fri
2000-01-10 Mon
2000-01-11 Tue
2000-01-12 Wed
2000-01-13 Thu
2000-01-14 Fri
2000-01-17 Mon
2000-01-18 Tue
2000-01-19 Wed
2000-01-20 Thu
2000-01-21 Fri
2000-01-24 Mon
2000-01-25 Tue
2000-01-26 Wed
2000-01-27 Thu
2000-01-28 Fri
"
library(zoo)
# replace textConnection(...) with your file name, e.g.
# read.zoo("myfile.dat", header = TRUE)
r.z <- read.zoo(textConnection(Lines.da), header = TRUE)
date.z <- read.zoo(textConnection(Lines.date), header = TRUE)
tmp.z <- merge(r.z, zoo(, time(date.z)), fill = 0)
z <- merge(r = tmp.z, weekday = as.numeric(format(time(z, "%w"))), h = !z)
For more info:
library(zoo)
vignette("zoo")
vignette("zoo-quickref")
vignette("zoo-faq")
On Fri, Apr 4, 2008 at 7:49 AM, saikat sarkar <dipa_sanyal at yahoo.com> wrote:
>
> Hi,
>
> R experts. I am a new user of R and trying to learn this program.
>
> I have a problem. Here is the code.
>
> d<-as.Date(c("2000/01/03","2000/01/05","2000/01/19","2000/01/28"))
> r<-rnorm(4)
> da<-data.frame(d,r)
>
> a<-as.Date("01/01/2000","%d/%m/%Y")
> b<-as.Date("30/01/2000","%d/%m/%Y")
> ab<-seq(a,b,by=1)
> c<-format(ab,"%a")
> date<-data.frame(ab,c)
> date<-subset(date,c!="Sun")
> date<-subset(date,c!="Sat")
>
> Here I have 2 data frame.
>
> da
> -------------
> d r
> 1 2000-01-03 1.2105865
> 2 2000-01-05 -0.8962776
> 3 2000-01-19 -1.0438936
> 4 2000-01-28 2.1329387
>
> ---------------------------
> date
> --------------
> ab c
> 3 2000-01-03 Mon
> 4 2000-01-04 Tue
> 5 2000-01-05 Wed
> 6 2000-01-06 Thu
> 7 2000-01-07 Fri
> 10 2000-01-10 Mon
> 11 2000-01-11 Tue
> 12 2000-01-12 Wed
> 13 2000-01-13 Thu
> 14 2000-01-14 Fri
> 17 2000-01-17 Mon
> 18 2000-01-18 Tue
> 19 2000-01-19 Wed
> 20 2000-01-20 Thu
> 21 2000-01-21 Fri
> 24 2000-01-24 Mon
> 25 2000-01-25 Tue
> 26 2000-01-26 Wed
> 27 2000-01-27 Thu
> 28 2000-01-28 Fri
>
> ---------------
>
> In data frame-"DA"- I have return(r) and date
> In data frame-"Date"- where I have date and day.
>
> Now I need to create a data frame where returns will be conditional on date
> and rest will be zero.
>
> -------------------
> like this
> ---------------------
>
> ab c r hd
> 3 2000-01-03 Mon 1.2105865 0
> 4 2000-01-04 Tue 0 1
> 5 2000-01-05 Wed 0 1
> 6 2000-01-06 Thu 0 1
> 7 2000-01-07 Fri 0 1
>
> ---------------------------------
>
> >From this I can figureout the hoildays and then put each holidays equal to
> 1.
>
>
> Please help me.
>
> Thanking you
>
> saikat
>
>
>
> --
> View this message in context: http://www.nabble.com/How-can-we-creat-conditional-data-frame-tp16491208p16491208.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.
>
More information about the R-help
mailing list