【问题标题】:looping asJSON() and iterating dates in R [duplicate]在 R 中循环 asJSON() 和迭代日期 [重复]
【发布时间】:2020-11-25 05:00:32
【问题描述】:

一个工作项目让我两年多来第一次带出 R。

我有代码(为保护隐私而编辑)

fromJSON("fake-api.com/test?date_from=202001010000Z&date_to=202001012359Z&limit=100")

我想在该 URL 中迭代 UTC 时间码,以便每次迭代获得 24 小时,并从中提取 JSON 以进入与日期对应的对象。

我的问题是:

我怎样才能为每一天制作一个对象?

如何迭代 URL 中的日期以像这样提取:

20200101 <- fromJSON("...?date_from=202001010000Z&date_to=202001012359Z&limit=100")
20200102 <- fromJSON("...?date_from=202001020000Z&date_to=202001022359Z&limit=100")
20200103 <- fromJSON("...?date_from=202001030000Z&date_to=202001032359Z&limit=100")
20200104 <- fromJSON("...?date_from=202001040000Z&date_to=202001042359Z&limit=100")
20200105 <- fromJSON("...?date_from=202001050000Z&date_to=202001052359Z&limit=100")

我假设它是一个 For 循环和一些正则表达式,前者我忘记了怎么做,而后者我从来不知道。

感谢您的帮助和建议!

本杰明

【问题讨论】:

    标签: r json regex loops date


    【解决方案1】:

    您可以编写一个传递开始日期和结束日期的函数。

    get_data <- function(start_date, end_date) {
       #Convert start and end date to Date object
       start_date <- as.Date(start_date, '%Y%m%d')
       end_date <- as.Date(end_date, '%Y%m%d')
       #Create a sequence of days from start to end date 
       #and get the data in original format
       dates <- format(seq(start_date, end_date, by = '1 day'), '%Y%m%d')
       #Create the URL to extract
       all_url <- sprintf('fake-api.com/test?date_from=%s0000Z&date_to=%s2359Z&limit=100', dates, dates)
       #Use lapply to read the data from each url
       all_data <- lapply(all_url, jsonlite::fromJSON)
       #Return list of data read
       return(all_data)
    }
    

    并将其称为:

    all_data <- get_data('20200101', '20200105')
    

    all_data 将是一个列表,其中每个元素都是每天的数据,all_data[[1]]all_data[[2]] 等可以访问。

    【讨论】:

      猜你喜欢
      • 2020-05-05
      • 2019-09-10
      • 1970-01-01
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 2014-05-19
      • 2020-07-06
      • 2019-05-17
      相关资源
      最近更新 更多