Mikkel - thank you so much! That's a great start! I could change my demands a bit and pick out the first stock each month. The first stock each week is helpful, but I would need a bigger gap between dates - hence, the first stock a month would be much better. It seems to me, however, that isoWeekYear is great for week and year but not so great for month. If you have any ideas, please let me know!
Thanks! Anna On Tue, Sep 13, 2011 at 6:55 PM, Mikkel Grum <mi2kelg...@yahoo.com> wrote: > The following will get you the first stock in each week. Is that useful? > > install.packages("surveillance") > library(surveillance) > alldat$year <- isoWeekYear(alldat$mydate)$ISOYear > alldat$week <- isoWeekYear(alldat$mydate)$ISOWeek > alldat <- alldat[order(alldat$year, alldat$week), ] > alldat[!duplicated(paste(alldat$year, alldat$week, alldat$myeq)), ] > > > > ----- Original Message ----- > From: Anna Dunietz <anna.duni...@gmail.com> > To: r-help@r-project.org > Cc: > Sent: Tuesday, September 13, 2011 9:04 AM > Subject: [R] Deleting Rows based on Factor and Time Period > > Hi All! > > I have been messing around with this problem for about a week but to no > avail! The following data has been cut down in order to make my question > reproducible. The alldat data frame includes 2 columns: 1 date column and > 1 > factor column (equity names)). > > > mydate<-as.Date(c("2001-07-02","2001-07-02","2001-07-03","2001-07-03","2001-07-05","2001-07-05","2001-07-10","2001-07-13","2010-01-27"),origin="1970-01-01") > > > myeq<-factor(c("FCX.UN.Equity","TIE.UN.Equity","FCX.UN.Equity","TIE.UN.Equity","FCX.UN.Equity","TIE.UN.Equity","TIE.UN.Equity","L.UN.Equity","FCX.UN.Equity")) > > alldat<-data.frame(mydate,myeq) > > > > alldat mydate myeq > 1 2001-07-02 FCX.UN.Equity > 2 2001-07-02 TIE.UN.Equity > 3 2001-07-03 FCX.UN.Equity > 4 2001-07-03 TIE.UN.Equity > 5 2001-07-05 FCX.UN.Equity > 6 2001-07-05 TIE.UN.Equity > 7 2001-07-10 TIE.UN.Equity > 8 2001-07-13 L.UN.Equity > 9 2010-01-27 FCX.UN.Equity > > > I group respective factors together by using the split function. For each > respective factor, I am interested in deleting the rows that entail dates > that are less than or equal to the *first* stock in that column + 6. > Repeat > the following sentence, but instead of *first* use second, third, etc. In > short, I do not want an equity that has dates within a week of one another > at any point in the data frame/list (depending on if you're looking at > alldat or divall). For example, for FCX.UN.Equity, I would only want the > row beginning with 2001-07-02 to remain, as well as the row starting with > 2010-01-27. I cannot delete rows immediately because I need all rows in > order to determine which rows to delete. > > diveq<-alldat$myeq > divall<-split(alldat,diveq) > > I try to pick out those rows that I want to delete by using a double loop > (inefficient and awful, I know). For better or for worse, the double loop > does not work. I get integer(0) for all elements of workin. I put the > second condition in the which function, so that the first date is saved. I > use the third condition, so that the dates looked at are all greater than > or > equal than the date being looked at. I have spent many, many hours on this > and can still not figure it out. > > workin<-list() > for(j in 1:length(divall)){ > for(i in 1:nrow(divall[[j]])){ > workin[[j]]<-which(divall[[j]][,1]<=divall[[j]][i,1]+6 & > divall[[j]][,1]!=divall[[j]][i,1] & divall[[j]][,1]>=divall[[j]][i,1]) > }} > > If I could get the workin list to work, I would use unique and unlist in > order to find the index that would show me which rows in divall/alldat need > to be deleted. > > I hope this has been clear. Please let me know if you need any more > information! > > Thank you very much! > Anna > > [[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<http://www.r-project.org/posting-guide.html> > and provide commented, minimal, self-contained, reproducible code. > > [[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.