2016-10-22 15 views
2

低コスト空気質センサー(AQE)は、そのデータをopensensors.ioサーバーに送信します。 x秒ごとに、一連の情報(タイムスタンプ、汚染物質濃度など)が送信されます。データはjsonファイルとして構造化されて取り出すことができます。 Opensensorsの用語は、devices,topics,organizations、およびpayloadsを使用しています。私は、カールハンドルを設定し、カールパッケージを使用してcsvファイルをダウンロードする方法を理解しました。ここでダウンロードしたデータの例は、私が(temp)このopensensors jsonファイルをデータフレーム(またはテーブル)に変換

temp <- fromJSON("curlDownloadTest.csv", simplifyDataFrame = FALSE) 

出力を変換するためにjsonliteパッケージにfromJSONを使うhttps://github.com/GeraldCNelson/AQEAnalysis/commit/c6ee29545d07835c5a920bf2b37625adb78462aa

であることと、大きなリストであるコード

curl_download(url = myURL2, destfile = "curlDownloadTest.csv", mode = "w", handle = myCurlHandle) 

です2つの要素 - メッセージと次へmessagesにはすべてのデータが含まれています。 nextは、次のデータセットを取得するためのリンクです(すべてを一度にダウンロードするわけではありません)。

メッセージリストは、複数のセットのリスト(アップロードされた各データセットごとに1セット)から成ります。各セットは、device,owner,topic,dateおよび​​の5つの要素を有する。ペイロードは3 - encoding(常にchr utf-8)、content-type(常にchr "application/json")、textのリストです。テキストリストは、json形式で表示されます(「シリアル番号\」:\ "egg \ n" 「DEGF \」)

Iがデータフレーム 列と日付情報と残りの列(serial-numberconverted value、等のペイロードからテスト情報を有する(又はデータテーブル)に、このデータを再構築します..

私はその電流からのペイロードリストにテキストリストを変換する方法を見つけ出すことはできません(JSON?)構造Iは、データフレームにrbindできる何かに。

+0

ここでOpenSensorsのYoditは、現在私たちが必要としているように、R-Statsライブラリを作成しています。あなたの人生をより楽にしてくれるように、今後数週間にわたって頭を押してくれます。 – yods

+0

こんにちは@JerryN - 私はここのRパッケージ(https://github.com/lgatto/rosio)で作業を始めました。ビネットは概要を示します。 – Laurent

答えて

2

ありがたいことに、すべてがかなり均一です:

library(jsonlite) 
library(dplyr) 

df <- fromJSON("curlDownloadTest.csv") 

bind_cols(
    select(df$messages, device, owner, topic, date), 
    stream_in(textConnection(df$messages$payload$text), flatten=TRUE) 
) -> df 

glimpse(df) 
## Observations: 742 
## Variables: 14 
## $ device    <chr> "egg00802aaa019b0111", "egg00802aaa019b0111", "egg00802aaa019b0111", "... 
## $ owner    <chr> "wickeddevice", "wickeddevice", "wickeddevice", "wickeddevice", "wicke... 
## $ topic    <chr> "/orgs/wd/aqe/temperature/egg00802aaa019b0111", "/orgs/wd/aqe/humidity... 
## $ date    <chr> "2016-10-10T17:02:09.507Z", "2016-10-10T17:02:09.811Z", "2016-10-10T17... 
## $ serial-number  <chr> "egg00802aaa019b0111", "egg00802aaa019b0111", "egg00802aaa019b0111", "... 
## $ converted-value <dbl> 63.20, 43.31, 0.52, -25.20, 63.70, 42.85, 0.53, -13.32, 64.01, 42.58, ... 
## $ converted-units <chr> "degF", "percent", "ppb", "ppb", "degF", "percent", "ppb", "ppb", "deg... 
## $ raw-value   <dbl> 63.200000, 43.310000, 0.221252, -0.827832, 63.700000, 42.850000, 0.221... 
## $ raw-instant-value <dbl> 63.48000, 43.07000, 0.22149, -0.82785, 63.91000, 42.66000, 0.22073, -0... 
## $ raw-units   <chr> "degF", "percent", "volt", "volt", "degF", "percent", "volt", "volt", ... 
## $ sensor-part-number <chr> "SHT25", "SHT25", "NO2-B4-ISB", "3SP-O3-20-PCB", "SHT25", "SHT25", "NO... 
## $ raw-value2   <dbl> NA, NA, 0.222732, NA, NA, NA, 0.222797, NA, NA, NA, 0.222460, NA, NA, ... 
## $ raw-instant-value2 <dbl> NA, NA, 0.22330, NA, NA, NA, 0.22273, NA, NA, NA, 0.22341, NA, NA, NA,... 
## $ compensated-value <dbl> NA, NA, 0.62, -25.25, NA, NA, 0.63, -13.37, NA, NA, 0.02, -18.08, NA, ... 
関連する問題