See comments inline. > -----Original Message----- > From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of Bob Rudis > Sent: Thursday, January 12, 2017 12:41 PM > To: David Winsemius > Cc: r-help@r-project.org > Subject: Re: [R] Match ISO 8601 week-of-year numbers to month-of-year > numbers on Windows with German locale > > Aye, but this: > > some_dates <- as.POSIXct(c("2015-12-24", "2015-12-31", "2016-01-01", > "2016-01-08")) > > (year_week <- format(some_dates, "%Y-%U")) > ## [1] "2015-51" "2015-52" "2016-00" "2016-01" > > (year_week_day <- sprintf("%s-1", year_week)) > ## [1] "2015-51-1" "2015-52-1" "2016-00-1" "2016-01-1" > > (as.POSIXct(year_week_day, format = "%Y-%U-%u")) > ## [1] "2015-12-21 EST" "2015-12-28 EST" "2016-01-04 EST" "2016-01-04 EST" > > works fine on macOS & Linux (Ubuntu, anyway), but it fails on Windows (10, > 64bit, R 3.3.2): > > (as.POSIXct(year_week_day, format = "%Y-%U-%u")) > ## [1] "2015-12-21 PST" "2015-12-28 PST" NA "2016-01-04 PST"
Why do you say it works fine on Ubuntu? The date "2016-01-01" is in week 0 of 2016. There is no Monday in week 0. So I would argue the return value of NA from Windows is more appropriate than returning the date of Monday in week 1 of 2016 like Ubuntu does. Dan Daniel Nordlund, PhD Research and Data Analysis Division Services & Enterprise Support Administration Washington State Department of Social and Health Services > > On 1/12/17, David Winsemius <dwinsem...@comcast.net> wrote: > > > >> On Jan 12, 2017, at 8:14 AM, Janko Thyson <janko.thy...@gmail.com> > wrote: > >> > >> Dear list, > >> > >> I'm experiencing problems with converting strings of the format > >> "YYYY-<weekofyear>" (e.g. 2016-01, 2016-52) to proper POSIX dates > >> which (I > >> think) I need in order to retrieve the month-of-the-year number. > >> > >> Simpler put: I'd like to match week-of-the-year numbers to > >> month-of-the-year numbers. Ideally, the week-of-the-year number > would > >> follow the ISO 8601 convention (i.e. format argument "%V") instead of > >> the US (format argument "%U") or UK (format argument "%W") > convention. > >> > >> After posting this to Stackoverflow, I have strong reasons to believe > >> that the issue is caused by Windows: > >> http://stackoverflow.com/questions/41616407/match-iso-8601-week- > numbe > >> rs-to-month-of-year-on-windows-with-german- > locale/41617215?noredirect > >> =1#comment70436768_41617215 > >> > >> Example: > >> > >> # ISO 8601 convention: > >> > >> (yw <- format(posix, "%Y-%V")) > > > > The documentation for R datetime format parameters ?strptime says %V > > is ignored on input. > > > > > >> # [1] "2015-52" "2015-53" "2016-53" "2016-01" > >> ywd <- sprintf("%s-1", yw)(as.POSIXct(ywd, format = "%Y-%V-%u")) > > > > The documentation for R datetime format parameters ( = ?strptime) says > > %V is ignored on input. > > > > You should leartn to post plain text to r-help. > > > > -- > > David. > > > > > >> # [1] > >> "2015-01-12 CET" "2015-01-12 CET" "2016-01-12 CET" "2016-01-12 CET"# > >> -> utterly wrong!!! > >> > >> # US convention: > >> (yw <- format(posix, "%Y-%U"))# [1] "2015-51" "2015-52" "2016-00" > >> "2016-01" > >> ywd <- sprintf("%s-1", yw)(as.POSIXct(ywd, format = "%Y-%U-%u"))# [1] > >> "2015-12-21 CET" "2015-12-28 CET" NA "2016-01-04 CET"# > >> -> NA problem for week 00A fellow R user tested this on both macOS > >> -> and > >> Ubuntu and he didn't encounter the issue: > >> > >> some_dates <- as.POSIXct(c("2015-12-24", "2015-12-31", "2016-01-01", > >> "2016-01-08")) > >> (year_week <- format(some_dates, "%Y %U"))## [1] "2015 51" "2015 52" > >> "2016 00" "2016 01" > >> (year_week_day <- sprintf("%s 1", year_week))## [1] "2015 51 1" "2015 > >> 52 1" "2016 00 1" "2016 01 1" > >> (as.POSIXct(year_week_day, format = "%Y %U %u"))## [1] "2015-12-21 > >> EST" "2015-12-28 EST" "2016-01-04 EST" "2016-01-04 EST" > >> > >> My session info: > >> > >>> sessionInfo() > >> R version 3.3.2 (2016-10-31) > >> Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows >= > 8 > >> x64 (build 9200) > >> > >> locale:[1] LC_COLLATE=German_Germany.1252 > >> LC_CTYPE=German_Germany.1252 > LC_MONETARY=German_Germany.1252 > >> [4] LC_NUMERIC=C LC_TIME=English_United > >> States.1252 > >> > >> attached base packages:[1] stats graphics grDevices utils > >> datasets methods base > >> > >> other attached packages: > >> [1] fva_0.1.0 digest_0.6.10 readxl_0.1.1 dplyr_0.5.0 > >> plyr_1.8.4 magrittr_1.5 > >> [7] memoise_1.0.0 testthat_1.0.2 roxygen2_5.0.1 devtools_1.12.0 > >> > >> loaded via a namespace (and not attached): > >> [1] Rcpp_0.12.8 lubridate_1.6.0 assertthat_0.1 packrat_0.4.8-1 > >> crayon_1.3.2 withr_1.0.2 > >> [7] R6_2.2.0 DBI_0.5-1 stringi_1.1.2 rstudioapi_0.6 > >> tools_3.3.2 stringr_1.1.0 [13] tibble_1.2 > >> > >> Any idea on how to workaround this issue on Windows? > >> > >> Thanks and best regards, > >> > >> Janko Thyson > >> > >> [[alternative HTML version deleted]] > >> > >> ______________________________________________ > >> R-help@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. > > > > David Winsemius > > Alameda, CA, USA > > > > ______________________________________________ > > R-help@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. > > > ______________________________________________ R-help@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.