jimshsu 我有X跟Y两种数值,X是时间,Y是数值 X Y 39142.0625 1.11E-28 39142.08333 7.01E-29 39142.10417 -1.00E-28 X Y 2007/3/1 01:30 1.11E-28 2007/3/1 02:00 7.01E-29 2007/3/1 02:30 -1.00E-28 1.请问R要怎么转换 39142.0625->2007/3/1 01:30 (我目前是用excel转) 2.请问我要如何让plot()函数画出来的图,下面X坐标是用2007/3/1 01:30 这样的时间表示,而不是39142.0625 (我用excel转过的时间表示放进plot()函数会无法画出结果,好像是因为转换过的时间表示法无法变成数值)
yihui 1、要把数值转化为日期,必然要有一个基期。一般来说软件采用的基期是1900-01-01 00:00:00,然后与给定时间作差,转化为天数。39142.0625就是39142天+(0.0625*24=1.5小时),后面1.5小时也就是01:30,前面的天数加到1900-1-1上面,最后就得到转化之后的日期了。我刚发现Excel的计算似乎有错误。一会儿仔细检查一下。当然,我是不赞成把日期用数值的形式存储的,因为不仅不好理解,而且不一定各个软件的转换标准统一。 2、作图的时候先不要画坐标轴,plot(..., axes=F),完了之后用axis()函数把坐标轴加上去,这里面的坐标位置以及标签你可以任意取,这样就不会受默认plot对坐标轴的限制(最后最好再box()一下,把边框补齐)
yihui 因为转换不具有通用性,所以没有必要写这样的函数,只要知道了基期,这个转换就太容易了,因为R里面的时间日期对象都是可以直接做加法的。 另外,仍然建议不要在转换上花功夫,我想原始数据不可能是以数值的形式录入的,毕竟这种方式很难让人看懂。
jimshsu > as.Date("1900-01-01") + 32331 [1] "1988-07-09" ??? 跟微软网站的说的结果1988-07-07差两天 在EXCEL也是跟R结果差两天 这又是什么问题呢? 不知是谁对谁错?
jimshsu EXCEL显示日期 EXCEL数值 R加上的数值 script 结果 1900/1/2 2.00 1 > as.Date(""1900-01-01"") + 1 [1] ""1900-01-02" 1900/2/28 59.00 58 > as.Date(""1900-01-01"") + 58 [1] ""1900-02-28" 1900/2/29 60.00 60 > as.Date(""1900-01-01"") + 59 [1] ""1900-03-01" 微软的1900年有229 可是我查万年历 1900没229 有人知道这问题吗?
jimshsu 自己ANS.这么回事 http://tlcheng.spaces.live.com/?_c11_BlogPart_FullView=1&_c11_BlogPart_BlogPart=blogview&_c=BlogPart&partqs=amonth%3D5%26ayear%3D2007
foreseer201 回复 第6楼 的 jimshsu: 差两天的原因是: 1). 微软将1900-1-1当天也计数;2). 1900年没有2月29日,但微软算上这天了。 其他软件,比如Oracle的函数,R的as.Date函数都没问题。所以用的时候要将Excel读进来的那个日期数值减2.