use 'merge': > DF = data.frame(X = c(114.5508, 114.6468, 114.6596, 114.6957, 114.6828, > 114.8903, 114.9519, 114.8842, + 114.8579, 114.8489), Y = c(47.14094, 46.98874, 46.91235, 46.88265, 46.80584, 46.67022, 46.53264, 46.47727, + 46.46457, 46.47032), Date = as.Date(c('2009-01-01', '2009-01-03', '2009-01-05', '2009-01-10', '2009-01-14', + '2009-01-15', '2009-01-16', '2009-01-17', '2009-01-22', '2009-01-29'))) > > s.d1 = '2009-01-01' > e.d1 = '2009-01-14' > f.n1 = seq(from = as.Date(s.d1) , to = as.Date(e.d1), by = 1) > > s.d2 = '2009-01-15' > e.d2 = '2009-01-31' > f.n2 = seq(from = as.Date(s.d2) , to = as.Date(e.d2), by = 1) > x.new <- data.frame(Date=c(f.n1, f.n2), + Fortnight=c(rep("FN1", length(f.n1)), rep("FN2", length(f.n2)))) > > merge(DF, x.new, all.x=TRUE) Date X Y Fortnight 1 2009-01-01 114.5508 47.14094 FN1 2 2009-01-03 114.6468 46.98874 FN1 3 2009-01-05 114.6596 46.91235 FN1 4 2009-01-10 114.6957 46.88265 FN1 5 2009-01-14 114.6828 46.80584 FN1 6 2009-01-15 114.8903 46.67022 FN2 7 2009-01-16 114.9519 46.53264 FN2 8 2009-01-17 114.8842 46.47727 FN2 9 2009-01-22 114.8579 46.46457 FN2 10 2009-01-29 114.8489 46.47032 FN2
On Mon, Jul 5, 2010 at 4:01 PM, Abdi, Abdulhakim <ab...@si.edu> wrote: > Dear List, > > I've been looking tirelessly for a solution to this dilemma but without > success. Perhaps someone has an idea that will guide me in the right > direction. > > Suppose I have the following data.frame: > > DF = data.frame(X = c(114.5508, 114.6468, 114.6596, 114.6957, 114.6828, > 114.8903, 114.9519, 114.8842, > 114.8579, 114.8489), Y = c(47.14094, 46.98874, 46.91235, 46.88265, 46.80584, > 46.67022, 46.53264, 46.47727, > 46.46457, 46.47032), Date = as.Date(c('2009-01-01', '2009-01-03', > '2009-01-05', '2009-01-10', '2009-01-14', > '2009-01-15', '2009-01-16', '2009-01-17', '2009-01-22', '2009-01-29'))) > > DF > X Y Date > 1 114.5508 47.14094 2009-01-01 > 2 114.6468 46.98874 2009-01-03 > 3 114.6596 46.91235 2009-01-05 > 4 114.6957 46.88265 2009-01-10 > 5 114.6828 46.80584 2009-01-14 > 6 114.8903 46.67022 2009-01-15 > 7 114.9519 46.53264 2009-01-16 > 8 114.8842 46.47727 2009-01-17 > 9 114.8579 46.46457 2009-01-22 > 10 114.8489 46.47032 2009-01-29 > > I also have two objects that contain the dates of the first and last > fortnight of the month of January 2009. > > s.d1 = '2009-01-01' > e.d1 = '2009-01-14' > f.n1 = seq(from = as.Date(s.d1) , to = as.Date(e.d1), by = 1) > > f.n1 > [1] "2009-01-01" "2009-01-02" "2009-01-03" "2009-01-04" "2009-01-05" > "2009-01-06" "2009-01-07" "2009-01-08" "2009-01-09" "2009-01-10" "2009-01-11" > "2009-01-12" "2009-01-13" "2009-01-14" > > s.d2 = '2009-01-15' > e.d2 = '2009-01-31' > f.n2 = seq(from = as.Date(s.d2) , to = as.Date(e.d2), by = 1) > > f.n2 > [1] "2009-01-15" "2009-01-16" "2009-01-17" "2009-01-18" "2009-01-19" > "2009-01-20" "2009-01-21" "2009-01-22" "2009-01-23" "2009-01-24" "2009-01-25" > "2009-01-26" "2009-01-27" "2009-01-28" "2009-01-29" "2009-01-30" "2009-01-31" > > > I'm trying to add a column called "Fortnight" to the existing data.frame. The > components of the new "Fortnight" column are based on the existing "Date" > column so that if the value in "Date" falls within the first fortnight (f.n1) > then the value of the new "Fortnight" column would be "FN1", and if the value > of the "Date" column falls within the second fortnight (f.n2), then the value > of the "Fortnight" column would be "FN2", and so on. > > The end result should look like: > > X Y Date Fortnight > 1 114.5508 47.14094 2009-01-01 FN1 > 2 114.6468 46.98874 2009-01-03 FN1 > 3 114.6596 46.91235 2009-01-05 FN1 > 4 114.6957 46.88265 2009-01-10 FN1 > 5 114.6828 46.80584 2009-01-14 FN1 > 6 114.8903 46.67022 2009-01-15 FN2 > 7 114.9519 46.53264 2009-01-16 FN2 > 8 114.8842 46.47727 2009-01-17 FN2 > 9 114.8579 46.46457 2009-01-22 FN2 > 10 114.8489 46.47032 2009-01-29 FN2 > > I manually entered the above values for the "Fortnight" column to illustrate > my point, however, that would be quite tiresome for 500+ rows of data ;-) > > The only other similar issue I found on the list was > https://stat.ethz.ch/pipermail/r-help/2008-February/153995.html but that > particular problem is slightly different than what I'm trying to accomplish > here. > > I appreciate your time and assistance. > > Thanks in advance. > > Regards, > > > Hakim Abdi > > > > _________________________________ > Abdulhakim Abdi, M.Sc. > Research Intern > > Conservation GIS/Remote Sensing Lab > Smithsonian Conservation Biology Institute > 1500 Remount Road > Front Royal, VA 22630 > phone: +1 540 635 6578 > mobile: +1 747 224 7006 > fax: +1 540 635 6506 (Attn:GIS Lab) > email: ab...@si.edu > http://nationalzoo.si.edu/SCBI/ConservationGIS/ > > > > > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@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. > -- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve? ______________________________________________ R-help@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.