Odp: to append a column to a data frame, has I use loop/if in my case?
Hi r-help-bounces at r-project.org napsal dne 17.01.2011 15:59:37:
days=Sys.Date()-1:70
price=abs(rnorm(70))
regular=rep(c(0,0,0,0,1,0,1,0,0,1),c(7,7,7,7,7,7,7,7,7,7))
y=data.frame(cbind(days,price,regular))
y is like
days price regular
1 14990 0.16149463 0
2 14989 1.69519358 0
3 14988 1.57821998 0
4 14987 0.47614311 0
5 14986 0.87016180 0
6 14985 2.55679229 0
7 14984 0.89753533 0
the output I want:
have another column appended to y, whose value is the max price in the
recent
2 **regular** weeks.
I have no idea what is regular week. Seems to me that you seek some rolling maxima for which I suggest to consult package zoo and its function rollapply.
So if the current row is today, then get the max price of the past 14
days
(including today) if the last 2 week are regular weeks, if one of the
last 2
weeks is not regular week, then I need to go back further to find the
max
price, as I need the max price for the last 2 **regular** weeks. How can
I do
that? Or I have to use loop/if to do it? BTW, why the days is like 14990,14989, after cbind(days,price,regular)?
before
the cbind, days is like the format "2010-12-23". [[alternative HTML version deleted]]
cbind binds together three vectors and makes a matrix. Matrix can have only values of only one type. Therefore it strips off days to underlying numeric representation. If you want to know more about R objects and their properties you could read R intro.
str(cbind(days,price,regular))
num [1:70, 1:3] 14991 14990 14989 14988 14987 ... - attr(*, "dimnames")=List of 2 ..$ : NULL ..$ : chr [1:3] "days" "price" "regular" Regards Petr
______________________________________________ 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.