[R] Loop With Dates
Ana PGG
@n@cre@m @end|ng |rom gm@||@com
Fri Sep 20 20:40:06 CEST 2019
Hi Phillip,
This can be done in several ways as most things in programming. Here is one posible solution:
dates <- c("2018-03-29", "2018-03-29", "2018-03-29",
"2018-03-30", "2018-03-30", "2018-03-30",
"2018-03-31", "2018-03-31", "2018-03-31")
dates <- as.data.frame(as.Date(dates))
library(zoo)
dates <- zoo(dates)
colnames(dates) <- "dates"
dates$lag <- lag(dates, -1, na.pad = TRUE)
dates[1, 2] <- dates[1, 1]
dates$count <- cumsum(!(dates$dates == dates$lag)) + 1
dates$lag <- NULL
> dates
dates.object count
1 2018-03-29 1
2 2018-03-29 1
3 2018-03-29 1
4 2018-03-30 2
5 2018-03-30 2
6 2018-03-30 2
7 2018-03-31 3
8 2018-03-31 3
9 2018-03-31 3
De: Phillip Heinrich
Enviado: viernes, 20 de septiembre de 2019 19:47
Para: r-help
Asunto: [R] Loop With Dates
With the data snippet below I’m trying to increment the “count” vector by one each time the date changes.
Date count
1 2018-03-29 1
2 2018-03-29 1
3 2018-03-29 1
81 2018-03-30 1
82 2018-03-30 1
83 2018-03-30 1
165 2018-03-31 1
166 2018-03-31 1
167 2018-03-31 1
>
I can get count to change when the date changes with the following code:
test2 <- transform(test2,
+ count = ifelse(Date == lag(Date,1),count,count+1))
> test2
Date count
1 2018-03-29 NA
2 2018-03-29 1
3 2018-03-29 1
81 2018-03-30 2
82 2018-03-30 1
83 2018-03-30 1
165 2018-03-31 2
166 2018-03-31 1
167 2018-03-31 1
...but I want all three March 30 rows to have a count of 2 and the March 31 rows to be equal to 3. Any suggestions?
Thanks.
[[alternative HTML version deleted]]
______________________________________________
R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.
[[alternative HTML version deleted]]
More information about the R-help
mailing list