看板 R_Language 關於我們 聯絡資訊
看了幾次你的問題,有點搞不清楚你再問什麼 不過我盡可能抓你問題的大意來回答你 有任何問題再推文問 ※ 引述《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。 非常感謝大家! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.235.41.245 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1496579812.A.7E8.html ※ 編輯: celestialgod (36.235.41.245), 06/04/2017 20:37:51
peterwu76: 感謝前輩的解答,我可能需要消化一下… 06/04 22:43
peterwu76: 語意的部分,很抱歉表達不清楚。 06/04 22:43
peterwu76: 就前輩的圖來說,我覺得我的問題可能已被您的方法滿足 06/04 22:44