如何减少R的时间

时间:2017-06-08 08:06:24

标签: r

我在R dataframe中有以下日期时间列

date
2016-03-21 16:18:00 IST
2016-04-01 03:12:00 IST
2016-04-01 14:58:00 IST
2016-04-02 03:24:00 IST
2016-04-02 19:00:00 IST
2016-04-02 20:40:00 IST

日期列为POSIXct格式

我想在12am-6am,6am-12pm,12pm-6pm and 6pm-12am

中抽时间

我想要的数据框是

date                        time_bucket
2016-03-21 16:18:00 IST     12pm-6pm
2016-04-01 03:12:00 IST     12am-6am
2016-04-01 14:58:00 IST     12pm-6pm 
2016-04-02 03:24:00 IST     12pm-6pm
2016-04-02 19:00:00 IST     6pm-12am
2016-04-02 20:40:00 IST     6pm-12am 

我怎样才能在r?

中这样做

2 个答案:

答案 0 :(得分:0)

有点冗长,但工作(编辑需要润滑剂包)

import java.io.*;

class Palindrome{

    public static void main(String[] args){

        Palindrome p=new Palindrome();
        int i,j;

        char arr[]={'r','e','v','e','r','s','e'};
        int len=arr.length;

        char name[]=new char[len];

        for(i=0,j=len;j>0;j--,i++)
        {name[i]=arr[j];}

        //main`enter code here`

    }

答案 1 :(得分:-1)

由于只有四个时隙我使用了一系列嵌套的ifelse statemenst和来自lubridate包的小时函数

> data1=read.csv("data1.csv")
> library(lubridate)
> data1$hour=hour(data1$date)
> data1$timeslot=ifelse(data1$hour<6,"12am-6am",data1$hour)
> data1$timeslot=ifelse(6<=data1$hour&data1$hour<12,"6am-12pm",data1$timeslot)
> data1$timeslot=ifelse(12<=data1$hour&data1$hour<18,"12pm-6pm",data1$timeslot)
> data1$timeslot=ifelse(18<=data1$hour&data1$hour<=24,"6pm-12pm",data1$timeslot)
> data1
                     date hour timeslot
1 2016-03-21 16:18:00 IST   16 12pm-6pm
2 2016-04-01 03:12:00 IST    3 12am-6am
3 2016-04-01 14:58:00 IST   14 12pm-6pm
4 2016-04-02 03:24:00 IST    3 12am-6am
5 2016-04-02 19:00:00 IST   19 6pm-12pm
6 2016-04-02 20:40:00 IST   20 6pm-12pm