首页 > 解决方案 > 从 R 中的 JSON 文件中拆分数据的巨大问题

问题描述

我是 R 新手,在拆分本地导入的数据时遇到问题,该数据是包含 SensorID、TimeStamp、SensorValue 和 SensorUnits 的 JSON 文件。但它没有向我显示任何结果。而通过 Web 链接调用的同一个 JSON 文件完全可以正常工作。

请帮忙!

这是 JSON 文件作为文本:

[
    {
    "paramname": "coltimestamp",
        "paramvalue": "TIMESTAMP"
    },
    {
    "paramname": "colsensorid",
        "paramvalue": "SENSORID"
    },
    {
    "paramname": "colsensorvalue",
        "paramvalue": "SENSORVALUE"
    },
    {
    "paramname": "sensorid",
        "paramvalue": "D1"
    },
    {
    "paramname": "datatimeformat",
        "paramvalue": "%d-%m-%Y %H:%M:%S"
    },
    {
    "paramname": "intimezone",
        "paramvalue": "GMT"
    },
    {
    "paramname": "rangetimeformat",
        "paramvalue": "%Y%m%d %H:%M:%S"
    },
    {
    "paramname": "Pfrom",
        "paramvalue": "20160324 00:00:00"
    },
    {
    "paramname": "Pto",
        "paramvalue": "20160325 00:00:00"
    },
    {
    "paramname": "Cfrom",
        "paramvalue": "20160325 00:00:00"
    },
    {
    "paramname": "Cto",
        "paramvalue": "20160326 00:00:00"
    },
    {
    "paramname": "thresholdpercent",
        "paramvalue": 25
    }
]

这是我遇到问题的代码部分:

将数据拆分为 2 个数据集的函数:Previous、Current

IN: Standard Data Frame, SensorID,   
    Previous From Time stamp, Previous To Time stamp,   
    Current From Time Stamp, Current To Time Stamp  
OUT: Data series     
     series 1 (SensorID, TimeStamp, SensorValue),  
     series 2 (SensorID, TimeStamp, SensorValue) 


    f_splitdataseries <- function(SensorID, Intimeformat, Datatimeformat, PFrom, PTo, CFrom, CTo)
    {
      PFromPOSIX = as.POSIXct(PFrom, format=Intimeformat, tz="GMT", usetz=FALSE);
      PToPOSIX = as.POSIXct(PTo, format=Intimeformat, tz="GMT", usetz=FALSE);
      CFromPOSIX = as.POSIXct(CFrom, format=Intimeformat, tz="GMT", usetz=FALSE);
      CToPOSIX = as.POSIXct(CTo, format=Intimeformat, tz="GMT", usetz=FALSE);

      mydata$TimeStampPOSIX <- as.POSIXct(mydata$TimeStamp, 
                                           format=Datatimeformat, tz="GMT", usetz=FALSE);

      series1 = mydata[which(mydata$SensorID ==SensorID & 
                                mydata$TimeStampPOSIX >= PFromPOSIX & mydata$TimeStampPOSIX < PToPOSIX),];
      series2 = mydata[which(mydata$SensorID ==SensorID & 
                                mydata$TimeStampPOSIX >= CFromPOSIX & mydata$TimeStampPOSIX < CToPOSIX),];
      return(list(series1, series2));
    }

    Running the above function, splitting data into 2
    s = f_splitdataseries (SensorID=v_sensorid,
                           Intimeformat=v_rangetimeformat, Datatimeformat=v_datatimeformat,
                           PFrom=v_Pfrom, PTo=v_Pto,
                           CFrom=v_Cfrom, CTo=v_Cto)

    Unpack the 2 list of data frames
    series1 <- s[[1]]
    series2 <- s[[2]]

标签: rjsondatetimesplit

解决方案


推荐阅读