Создать 4-значный формат лет из as.date () - PullRequest
0 голосов
/ 26 сентября 2018

Я хочу сгенерировать список URL, который зацикливается от startDate до endDate.Однако действительный URL-адрес записан в 4-значных годах, а результат получен в 2-значном формате.Здесь я использую пакет Lubridate.Я считаю, что есть более простой для этого.Как я могу улучшить этот код?Спасибо ..

startDate <- as.Date("01-11-17", format="%d-%m-%y")
endDate <- as.Date("31-01-18",format="%d-%m-%y")
theDay <- startDate

while (theDay <= endDate)
{ 
  dy <- as.character(theDay, format="%d")
  month <- as.character(theDay, format = "%m")
  year <- as.character(theDay, format ="%y")
  link <- "http://weather.uwyo.edu/cgi-bin/sounding?"
  address <- 
   paste0(link,year,"&MONTH=",month,"&FROM=",dy,"00&T0=",dy,"00&STNM=48657")
  print(address)
  theDay = theDay + 1
}

Ответы [ 4 ]

0 голосов
/ 26 сентября 2018

Вы можете просто использовать функцию year () из пакета lubridate.Ниже приведен код:

startDate <- as.Date("01-11-17", format="%d-%m-%y")
year(startDate)

#[1] 2017
0 голосов
/ 26 сентября 2018

Поскольку вы используете lubridate, просто используйте функцию year: year <- year(theDay)

library(lubridate)
startDate <- as.Date("01-11-17", format="%d-%m-%y")
endDate <- as.Date("31-01-18",format="%d-%m-%y")
theDay <- startDate

while (theDay <= endDate)
{ 
  address <- 
    paste0("http://weather.uwyo.edu/cgi-bin/sounding?",
           year(theDay),
           "&MONTH=",sprintf("%02d", month(theDay)) ,
           "&FROM=",sprintf("%02d", day(theDay)) ,"00&T0=",sprintf("%02d", day(theDay)) ,
           "00&STNM=48657")
  print(address)
  theDay = theDay + 1
}
0 голосов
/ 26 сентября 2018

Это можно сделать без цикла следующим образом.теперь u является символьным вектором URL.

link <- "http://weather.uwyo.edu/cgi-bin/sounding?"
params <- "region=naconf&TYPE=TEXT:LIST&YEAR=%Y&MONTH=%m&FROM=%d00&T0=%d00&STNM=48657"
fmt <- paste0(link, params)

u <- format(seq(startDate, endDate, by = "day"), format = fmt)
0 голосов
/ 26 сентября 2018

Вы должны попробовать %Y.Смотри ?strptime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...