簡體   English   中英

將 JSON 文件轉換為 R 中可用的數據幀

[英]Converting a JSON file to a workable dataframe in R

我在這里搜索了許多解決方案,但在這種情況下無法准確獲得我正在尋找的內容。

我從 API 中提取一個 JSON 文件並將其放入列表中。 數據基本上是以 5 分鍾為間隔的一天的值列表。 這些值在一個長度為 288 的列表中(因為一天中有 288 個 5 分鍾的間隔),並且有一個 startTime 對象從 date-00:00:00 開始,然后是另一個 intervalLength '00:05:00' 但是這些不是清單。

> dput(jdf)
list(startTime = "2021-11-07T00:00:00.000+00:00", intervalLength = "00:05:00", 
    values = list(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 7.66666666666667, 
        7.66666666666667, 7.66666666666667, 16L, 16L, 16L, 28.3333333333333, 
        28.3333333333333, 28.3333333333333, 25.3333333333333, 
        25.3333333333333, 25.3333333333333, 36.6666666666667, 
        36.6666666666667, 36.6666666666667, 48.3333333333333, 
        48.3333333333333, 48.3333333333333, 45.3333333333333, 
        45.3333333333333, 45.3333333333333, 56.3333333333333, 
        56.3333333333333, 56.3333333333333, 57.6666666666667, 
        57.6666666666667, 57.6666666666667, 54.6666666666667, 
        54.6666666666667, 54.6666666666667, 62.6666666666667, 
        62.6666666666667, 62.6666666666667, 73.3333333333333, 
        73.3333333333333, 73.3333333333333, 79.3333333333333, 
        79.3333333333333, 79.3333333333333, 81.6666666666667, 
        81.6666666666667, 81.6666666666667, 85L, 85L, 85L, 99L, 
        99L, 99L, 92.3333333333333, 92.3333333333333, 92.3333333333333, 
        110L, 110L, 110L, 117L, 117L, 117L, 119L, 119L, 119L, 
        126.333333333333, 126.333333333333, 126.333333333333, 
        123.666666666667, 123.666666666667, 123.666666666667, 
        123L, 123L, 123L, 122.333333333333, 122.333333333333, 
        122.333333333333, 118.333333333333, 118.333333333333, 
        118.333333333333, 99L, 99L, 99L, 89.6666666666667, 89.6666666666667, 
        89.6666666666667, 79.6666666666667, 79.6666666666667, 
        79.6666666666667, 86L, 86L, 86L, 91.3333333333333, 91.3333333333333, 
        91.3333333333333, 99.3333333333333, 99.3333333333333, 
        99.3333333333333, 120L, 120L, 120L, 114.666666666667, 
        114.666666666667, 114.666666666667, 119.666666666667, 
        119.666666666667, 119.666666666667, 112.333333333333, 
        112.333333333333, 112.333333333333, 90.3333333333333, 
        90.3333333333333, 90.3333333333333, 81.3333333333333, 
        81.3333333333333, 81.3333333333333, 67.6666666666667, 
        67.6666666666667, 67.6666666666667, 67.6666666666667, 
        67.6666666666667, 67.6666666666667, 66L, 66L, 66L, 75L, 
        75L, 75L, 82.6666666666667, 82.6666666666667, 82.6666666666667, 
        80L, 80L, 80L, 81.3333333333333, 81.3333333333333, 81.3333333333333, 
        76.6666666666667, 76.6666666666667, 76.6666666666667, 
        67.3333333333333, 67.3333333333333, 67.3333333333333, 
        65.6666666666667, 65.6666666666667, 65.6666666666667, 
        57.3333333333333, 57.3333333333333, 57.3333333333333, 
        71.3333333333333, 71.3333333333333, 71.3333333333333, 
        84.3333333333333, 84.3333333333333, 84.3333333333333, 
        91L, 91L, 91L, 100L, 100L, 100L, 109.666666666667, 109.666666666667, 
        109.666666666667, 105L, 105L, 105L, 117.666666666667, 
        117.666666666667, 117.666666666667, 118L, 118L, 118L, 
        110.333333333333, 110.333333333333, 110.333333333333, 
        105L, 105L, 105L, 89L, 89L, 89L, 84L, 84L, 84L, 62.3333333333333, 
        62.3333333333333, 62.3333333333333, 48.3333333333333, 
        48.3333333333333, 48.3333333333333, 32.3333333333333, 
        32.3333333333333, 32.3333333333333, 21.3333333333333, 
        21.3333333333333, 21.3333333333333, 18L, 18L, 18L, 17.6666666666667, 
        17.6666666666667, 17.6666666666667, 14.3333333333333, 
        14.3333333333333, 14.3333333333333, 8.66666666666667, 
        8.66666666666667, 8.66666666666667, 5L, 5L, 5L, 1.33333333333333, 
        1.33333333333333, 1.33333333333333, 0L, 0L, 0L, 0L, 0L, 
        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
        0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L))

對此

> glimpse(exampledate)
Rows: 288
Columns: 2
$ Time   <dttm> 2021-11-13 00:00:00, 2021-11-13 00:05:00, 2021-11-13 00:10:00, 2021-11-13 00:15:00, 2021-11-13 00:20:00, 2021-11-13 …
$ values <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …

提前致謝或任何幫助

您是否正在尋找類似的東西:

library(tidyverse)
library(rrapply)
library(lubridate)

start <- as_datetime(dat[[1]])
interval <- seconds(hms(dat[[2]]))

jdf %>%
  rrapply(., how = 'melt') %>%
  slice(-c(1:2)) %>%
  mutate(Time = start,
         add = interval * (0:(n() - 1)),
         Time = Time + add) %>%
  select(-L1, -L2, -add)

前 10 行:

       value                Time
1          0 2021-11-07 00:00:00
2          0 2021-11-07 00:05:00
3          0 2021-11-07 00:10:00
4          0 2021-11-07 00:15:00
5          0 2021-11-07 00:20:00
6          0 2021-11-07 00:25:00
7          0 2021-11-07 00:30:00
8          0 2021-11-07 00:35:00
9          0 2021-11-07 00:40:00
10         0 2021-11-07 00:45:00

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM