看板 R_Language 關於我們 聯絡資訊
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 新手(沒寫過程式,R 是我的第一次 [問題敘述]: 我把以下問題簡單化好了。 有一筆資料(txt檔,tab分隔) 19 Jan 19 15:40:00 19 Jan 19 15:41:30 (年月日分別各用一個column(縱向)紀錄) 我把資料讀入到R並將資料轉到 "time" object 結果會是: > time [1] "19 Jan 19 15:40:00" "19 Jan 19 15:41:30" strptime轉換格式 > time <- strptime(time, format='%d %b %g %H:%M:%S') > time [1] NA NA R就會如此無法處理 但若我先設置Sys.setlocale(LC_time) 就可以得到 > time <- strptime(time, tz="", format='%d %b %g %H:%M:%S') > time [1] "2019-01-19 15:40:00 CST" "2019-01-19 15:41:30 CST" 正常處理出需要的結果 現在的問題是,我要使用的package把strptime包在package的一連串程序裡面了。 執行指令後會出現error警告,我猜測是時間轉換會得到跟前面一樣 NA 的結果, 導致後續程序無法進行。 試過在執行package的指令前先設置Sys.setlocale(LC_time),一樣是會出現 Error警告。 由於我不會修改程式,所以我應該要如何做才能在不更動windows設定,讓 strptime正常運作。 ------ 目前我在使用R分析從記錄設備所獲得的紀錄資料,資料內容包含日期時間與紀錄。 得到的檔案為txt檔,tab分隔 日期的部分,年月日分別各用一個column(縱向)紀錄,時間總共是以一個column紀錄。 目前的問題是,當我用 "strptime"要將日期轉成 YYYY-MM-DD HH:mm:SS 的時候,R沒辦法正確處理,所以得到的檔案內容會變成 "NA" 。上網查發現有人指出 是時區(時間格式?)的問題,按照指示設定 "Sys.setlocale(LC_time)" 就可以正常 處理了。 現在我要使用另一個package進行分析,卡在一個要把A資料組轉成B資料組的步驟。 package的範例只需要下單一步指令就會自己跑,但是我會得到錯誤訊息,指出 D程式找不到時間資料。我上網查發現GitHub裡的D程式碼裡面包含"strptime"步驟,我 懷疑是一樣時間的問題造成。 我試過在執行指令前先照之前設定 "Sys.setlocale(LC_time)" 無效。 請問我可以如何在不動到windows本身設定下,解決時間設定的問題,或是設置參數, 讓package能夠正常地處理時間資料? 謝謝大大 [程式範例]: [環境敘述]: windows7 sp1 R-3.5.2 Rstudio-1.1.463 [關鍵字]: strptime -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.76.175.171 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1552535060.A.110.html
andrew43: 請提供明確的資料實例 03/14 12:01
※ 編輯: aklim (211.76.175.171), 03/14/2019 22:08:04 ※ 編輯: aklim (211.76.175.171), 03/14/2019 22:12:42
locka: 會出現NA是因為本機時間格式月份是中文顯示,而你的資料是 03/14 22:40
locka: 用Jan,所以才要用Sys.setlocale("LC_TIME","C")把他設成英 03/14 22:40
locka: 語系國家的顯示方式。這樣的處理方法應該沒有什麼問題,可 03/14 22:40
locka: 以分享你在用哪個package的fucntion嗎?搞不好根本不是strp 03/14 22:40
locka: time的問題? 03/14 22:40
cywhale: 應該可用 lubridate::ymd_hms('19 Jan 19 15:40:00')? 03/14 22:41
locka: 請問原po,你說你用到的套件裡面有用到strptime(),那有看 03/14 23:05
locka: 過裡面 format 參數是什麼嗎?有沒有可能是你的資料("19 Ja 03/14 23:05
locka: n 19 15:40:00")不符合他的格式所以餵進去才會沒辦法轉換 03/14 23:05
aklim: 謝大大的回應,由於我使用的package,他設計功能就包含分析 03/15 00:52
aklim: 我使用的紀錄系統的資料。package所提供的範本與我的資料 03/15 00:54
aklim: 是一致的,我按說明步驟操作時就卡在資料轉換的過程中 03/15 00:56
aklim: 我有看到lubridate,但資料不是我一步步處理,是package執 03/15 01:01
aklim: 行的,所以我加掛lubridate應該也沒用,因為package,並不 03/15 01:03
aklim: 是呼叫lubridate處裡日期 03/15 01:03
celestialgod: 提供資料 跟 相關程式碼 不然只能猜而已 03/15 01:19
locka: 同意樓上c大~ 03/15 13:15
aklim: 其實不用猜,我試過改掉一台電腦的時間日期設定成美國,同 03/15 13:16
aklim: 樣package的指令是可以正常完成的(同樣的檔案與指令順序), 03/15 13:17
aklim: 所以我算是可以肯定是strptime無法運算造成的。在這狀況下 03/15 13:19
aklim: 有辦法不改windows設定而達成嗎? 03/15 13:20
locka: Sys.setlocale()這行指令就是在修改window時間格式設定了 03/15 13:45
aklim: 請問這指令是直接改動windows的設定還是改動R環境的設定? 03/15 15:46
locka: 應該是 R 環境吧…可是 strptime 也是吃 R 環境設定,所以 03/15 16:08
locka: 照理說應該沒差 (有錯請指正) 如果真的要大家幫助的話,建 03/15 16:08
locka: 議還是po可重製錯誤的程式碼 03/15 16:08
aklim: 了解了..謝謝大大的幫忙.. 03/17 03:36