[問題] 時間處裡 (strptime)

作者: aklim (我搞砸了....)   2019-03-14 11:44:15
程式諮詢(我想用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正常運作。
作者: celestialgod (天)   2019-03-15 01:19:00
提供資料 跟 相關程式碼 不然只能猜而已
作者: aklim (我搞砸了....)   2019-03-15 00:52:00
謝大大的回應,由於我使用的package,他設計功能就包含分析我使用的紀錄系統的資料。package所提供的範本與我的資料是一致的,我按說明步驟操作時就卡在資料轉換的過程中我有看到lubridate,但資料不是我一步步處理,是package執行的,所以我加掛lubridate應該也沒用,因為package,並不是呼叫lubridate處裡日期
作者: locka (locka)   2019-03-14 23:05:00
請問原po,你說你用到的套件裡面有用到strptime(),那有看過裡面 format 參數是什麼嗎?有沒有可能是你的資料("19 Jan 19 15:40:00")不符合他的格式所以餵進去才會沒辦法轉換
作者: cywhale (cywhale)   2019-03-14 22:41:00
應該可用 lubridate::ymd_hms('19 Jan 19 15:40:00')?
作者: locka (locka)   2019-03-14 22:40:00
會出現NA是因為本機時間格式月份是中文顯示,而你的資料是用Jan,所以才要用Sys.setlocale("LC_TIME","C")把他設成英語系國家的顯示方式。這樣的處理方法應該沒有什麼問題,可以分享你在用哪個package的fucntion嗎?搞不好根本不是strptime的問題?
作者: andrew43 (討厭有好心推文後刪文者)   2019-03-14 12:01:00
請提供明確的資料實例
作者: locka (locka)   2019-03-15 13:15:00
同意樓上c大~
作者: aklim (我搞砸了....)   2019-03-15 13:16:00
其實不用猜,我試過改掉一台電腦的時間日期設定成美國,同樣package的指令是可以正常完成的(同樣的檔案與指令順序),所以我算是可以肯定是strptime無法運算造成的。在這狀況下有辦法不改windows設定而達成嗎?
作者: locka (locka)   2019-03-15 13:45:00
Sys.setlocale()這行指令就是在修改window時間格式設定了
作者: aklim (我搞砸了....)   2019-03-15 15:46:00
請問這指令是直接改動windows的設定還是改動R環境的設定?
作者: locka (locka)   2019-03-15 16:08:00
應該是 R 環境吧…可是 strptime 也是吃 R 環境設定,所以照理說應該沒差 (有錯請指正) 如果真的要大家幫助的話,建議還是po可重製錯誤的程式碼
作者: aklim (我搞砸了....)   2019-03-17 03:36:00
了解了..謝謝大大的幫忙..

Links booklink

Contact Us: admin [ a t ] ucptt.com