R语言与格式,日期格式,格式转化的操作

论坛 期权论坛     
niminba   2021-5-23 05:17   79   0
<p>R语言的基础包中提供了两种类型的时间数据,一类是Date日期数据,它不包括时间和时区信息,另一类是POSIXct/POSIXlt类型数据,其中包括了日期、时间和时区信息。</p>
<h2>基本总结如下:</h2>
<p>日期data,存储的是天;</p>
<p>时间POSIXct 存储的是秒,POSIXlt 打散,年月日不同;</p>
<p>日期-时间=不可运算。</p>
<p>一般来讲,R语言中建立时序数据是通过字符型转化而来,但由于时序数据形式多样,而且R中存贮格式也是五花八门,例如Date/ts/xts/zoo/tis/fts等等。lubridate包(后续有介绍,应用四),timeDate包,都有用。</p>
<p><strong>常见的格式:</strong></p>
<table cellpadding="0" cellspacing="0">
    <colgroup><col><col></colgroup>
    <tbody>
        <tr>
            <td>as.numeric</td>
            <td>转化为数值型</td>
        </tr>
        <tr>
            <td>as.logic</td>
            <td>转化为逻辑型</td>
        </tr>
        <tr>
            <td>as.complex</td>
            <td>转化为复数型</td>
        </tr>
        <tr>
            <td>as.character</td>
            <td>转化为字符型</td>
        </tr>
        <tr>
            <td>as.array</td>
            <td>转化为数组</td>
        </tr>
        <tr>
            <td>as.data.frame</td>
            <td>转化为数据框</td>
        </tr>
    </tbody>
</table>
<div class="blockcode">
<pre class="brush:bash;">
d&lt;-as.character(z) #将数值向量z&lt;-(0:9)转化为字符向量c("0", "1", "2", ..., "9")。  
as.integer(d)         #将d转化为数值向量  
e &lt;- numeric()     #产生一个numeric型的空向量e  
a=data.frame(a)  #变成R的数据框  
factor()               #变成因子  可以用levels()来看因子个数  
</pre>
</div>
<p>在data.frame中,是可以实现数据集重命名的,比如data.frame(x=iris,y=cars),</p>
<p>也可以实现横向、纵向重命名,data.frame(x=iris,y=cars,row.names=iris)</p>



<h2>后续加更内容</h2>
<p>应用1——如何通过生日计算年龄</p>
<p>应用2——日期分组</p>
<p>应用三——生成按天的时间序列并进行回归</p>
<p>应用四:灵活处理时间数据—lubridate包(来源TipDM)</p>
<p>应用五:如何在循环、函数中,输出实时时间消耗?</p>



<p>时间的标准格式</p>
<div class="blockcode">
<pre class="brush:bash;">
mydate = as.POSIXlt('2005-4-19 7:01:00')
names(mydate)</pre>
</div>
<p>默认情况下,日期之前是以/或者-进行分隔,而时间则以:进行分隔;</p>
<p>输入的标准格式为:日期 时间(日期与时间中间有空隔隔开)</p>
<p>时间的标准格式为:时:分 或者 时:分:秒;</p>
<p>如果输入的格式不是标准格式,则同样需要使用strptime函数,利用format来进行指定。</p>



<h2>一、日期型数据——data</h2>
<h3>1、as.Data函数</h3>
<p>在R中自带的日期形式为:as.Date();以数值形式存储;</p>
<p>对于规则的格式,则不需要用format指定格式;如果输入的格式不规则,可以通过format指定的格式读入;其中以1970-01-01定义为第0天,之后的年份会以距离这天来计算。</p>
<div class="blockcode">
<pre class="brush:bash;">
&gt; x&lt;-as.Date("1970-01-01")
&gt; unclass(x)
[1] 0
&gt;
&gt; unclass(as.Date("1970-02-01")) #19700201代表第31天
[1] 31</pre>
</div>
<p>代码解读:unclass可以将日期变成以天来计数,比如1970-02-01输出的31,就代表着距离1970-01-01有31天。</p>
<p>as.data中的参数格式:年-月-日或者年/月/日;如果不是以上二种格式,则会提供错误——错误于charTo按照Date(x) : 字符串的格式不够标准明确;</p>
<p>例如这样的数据格式,就常常报错。</p>
<p>19:15.</p>
<p>显示为:2011/1/1 19:15</p>
<div class="blockcode">
<pre class="brush:bash;">
as.Date('23-2013-1',format='%d-%Y-%m')  
#其中这个%d%Y可以节选其中一个
#%Y%y  大写代表年份四位数,小写代表年份二位数,要注意</pre>
</div>
<h3>2、%d%y%m-基本格式</h3>
<table border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>
            <p>格式</p>
            </td>
            <td>
            <p>意义</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>%d</p>
            </td>
            <td>
            <p>月份中当的天数</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>%m</p>
            </td>
            <td>
            <p>月份,以数字形式表示</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>%b</p>
            </td>
            <td>
            <p>月份,缩写</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>%B</p>
            </td>
            <td>
            <p>月份,完整的月份名,指英文</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>%y</p>
            </td>
            <td>
            <p>年份,以二位数字表示</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>%Y</p>
            <
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP