[问题] 时间处里 (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