看了幾次你的問題,有點搞不清楚你再問什麼
不過我盡可能抓你問題的大意來回答你
有任何問題再推文問
※ 引述《peterwu76 (金岡)》之銘言:
: [問題類型]:
:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
:
: [軟體熟悉度]:
: 初學者 有寫過其他程式的初淺經驗
: [問題敘述]:
: 1. 想從3個json來源的其中一個source抓資料下來,
: 最後我只要其中一個device (ID: 74DA38C7D1D2 )的資訊
: (1) 有全部的device資訊,real time
: https://data.lass-net.org/data/last-all-airbox.json
: (2) 一個是by specific ID,real time
: https://data.lass-net.org/data/last.php?device_id=74DA38C7D1D2
: (3) 一個是historical by ID
: https://data.lass-net.org/data/history.php?device_id=74DA38C7D1D2
: 2. Data處理: 抓下來的資料依照時間排序,如果是
: (1)的作法: 打算寫個抓下來需要再依照ID去做擷取並output的script,
: 再用工作排程器做定時抓資料,但排程器還沒掌握到如何
: 可以每天每小時/5分鐘去啟動script;
: (2)的做法: 就是寫好再用工作排程器作定時抓資料。
: (3)的作法: 抓下來後,想辦法排序。
: 3. Problems:
: (1)的做法與(2)的做法:
: 用自己try出來的寫法,但排程器還沒掌握到如何可以每天每小時或
: 5分鐘去啟動script;或是本身用R做到這件事。
用as.data.frame不是不行,只是這樣去破壞原有的list架構
會讓整個使用上變得怪,建議這樣用:
url <- "https://data.lass-net.org/data/last-all-airbox.json"
x <- fromJSON(url)
final_data_id <- subset(x$feeds, SiteName == "74DA38C7D1D2")
排成部分可以用taskscheduleR,可以參考這篇:https://goo.gl/4DtZTb
: (3)的做法:
: 不確定怎麼克服 1 row by 多重columns 至 只要些specific columns in rows by
: different times
完全沒看懂你在寫什麼,反正整成table,你應該就能直接使用了
library(jsonlite)
url <- "https://data.lass-net.org/data/history.php?device_id=74DA38C7D1D2"
x <- fromJSON(url)
library(data.table)
library(lubridate)
outDT <- rbindlist(x$feeds$AirBox)
outDT[ , `:=`(source = x$source, version = ymd_hms(x$version),
device_id = x$device_id, timestamp = ymd_hms(timestamp))]
看不懂data.table的話,試著用用看base做法
而lubridate的ymd_hms是比較簡單把字串轉時間的方式,不喜歡可以用as.POSIXct
結果:
http://imgur.com/a/4lliz
http://imgur.com/a/EoHGf
: 4. 希望眾前輩可以提供些function/package 的 keyword 含 concept。 非常感謝大家!