Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将日期数据(m/d/y)拆分为3列_R_Date - Fatal编程技术网

R 将日期数据(m/d/y)拆分为3列

R 将日期数据(m/d/y)拆分为3列,r,date,R,Date,我需要将日期(m/d/y格式)转换为3个独立的列,我希望在这些列上运行一个算法(我正在尝试将日期转换为朱利安日数)。看到了另一个用户关于使用Oracle将数据分离为多列的建议。我正在使用R,并且完全被困在如何恰当地编写代码的问题上。A1、A2……是否表示我的新列标题,以及“更新集”部分的格式差异是什么 updateset A1=substr(原1,4), A2=子序列(原始,5,6), A3=子序列(原始,11,6), A4=子序列(原始,17,5); 我正在努力提高我在R方面的技能,但我想不

我需要将日期(m/d/y格式)转换为3个独立的列,我希望在这些列上运行一个算法(我正在尝试将日期转换为朱利安日数)。看到了另一个用户关于使用Oracle将数据分离为多列的建议。我正在使用R,并且完全被困在如何恰当地编写代码的问题上。A1、A2……是否表示我的新列标题,以及“更新集”部分的格式差异是什么

updateset A1=substr(原1,4),
A2=子序列(原始,5,6),
A3=子序列(原始,11,6),
A4=子序列(原始,17,5);
我正在努力提高我在R方面的技能,但我想不出这一点…非常感谢任何帮助。提前感谢……:)

快速的:

  • 基本R中已经存在Julian日期转换器,请参见eg
    help(Julian)

  • 一种方法是将日期解析为POSIXlt,然后读取组件。其他日期/时间类和包也可以使用,但对于BaseR来说,有些东西值得一提

  • 将日期解析为字符串几乎总是一种糟糕的方法

  • 以下是一个例子:

    datetxt <- c("2010-01-02", "2010-02-03", "2010-09-10")
    dates <- as.Date(datetxt) ## you could examine these as well
    plt <- as.POSIXlt(dates)  ## now as POSIXlt types
    plt[["year"]] + 1900      ## years are with offset 1900
    #[1] 2010 2010 2010
    plt[["mon"]] + 1          ## and months are on the 0 .. 11 intervasl
    #[1] 1 2 9
    plt[["mday"]] 
    #[1]  2  3 10
    df <- data.frame(year=plt[["year"]] + 1900, 
                      month=plt[["mon"]] + 1, day=plt[["mday"]])
    df
    #  year month day
    #1 2010     1   2
    #2 2010     2   3
    #3 2010     9  10
    

    给定一个文本变量x,如下所示:

    > x
    [1] "10/3/2001"
    
    然后:

    将其转换为日期对象。然后,如果您需要:

    > julian(as.Date(x,"%m/%d/%Y"))
    [1] 11598
    attr(,"origin")
    [1] "1970-01-01"
    
    提供朱利安日期(相对于1970-01-01)

    不要尝试子字符串的事情

    有关更多信息,请参见帮助(as.Date)。

    我使用
    format()
    方法对
    Date
    对象分离R中的日期。使用Dirk的
    datetext
    ,我将如何将日期分解为其组成部分:

    datetxt <- c("2010-01-02", "2010-02-03", "2010-09-10")
    datetxt <- as.Date(datetxt)
    df <- data.frame(date = datetxt,
                     year = as.numeric(format(datetxt, format = "%Y")),
                     month = as.numeric(format(datetxt, format = "%m")),
                     day = as.numeric(format(datetxt, format = "%d")))
    

    注意其他几个人所说的话;您可以获得朱利安日期,而无需拆分各种日期组件。我添加这个答案是为了说明如果你需要它来做其他事情,你可以如何进行分解。

    嗨,加文:另一种方法[使用你的想法]是:

    我们将使用的数据框架是oilstocks,它包含与石油和天然气库存随时间变化相关的各种变量。 变量包括:

    colnames(stocks)
    "bpV"    "bpO"    "bpC"    "bpMN"   "bpMX"   "emdate" "emV"    "emO"    "emC"  
    "emMN"   "emMN.1" "chdate" "chV"    "cbO"    "chC"    "chMN"   "chMX" 
    
    首先要做的事情之一是将emdate字段(一个整数向量)更改为日期向量

    realdate<-as.Date(emdate,format="%m/%d/%Y")
    

    类似的结果,我也有日期、日、月、年作为DF以外的独立向量。< /P> < P>将日期(M/D/Y格式)转换成3个独立的列,考虑DF,

    df <- data.frame(date = c("01-02-18", "02-20-18", "03-23-18"))
    df
          date
    1 01-02-18
    2 02-20-18
    3 03-23-18
    

    df为了便于阅读,月份与
    month.name[plt[[“mon”]]+1]
    > df
            date year month day
    1 2010-01-02 2010     1   2
    2 2010-02-03 2010     2   3
    3 2010-09-10 2010     9  10
    
    colnames(stocks)
    "bpV"    "bpO"    "bpC"    "bpMN"   "bpMX"   "emdate" "emV"    "emO"    "emC"  
    "emMN"   "emMN.1" "chdate" "chV"    "cbO"    "chC"    "chMN"   "chMX" 
    
    realdate<-as.Date(emdate,format="%m/%d/%Y")
    
    > dfdate <- data.frame(date=realdate)
    year=as.numeric (format(realdate,"%Y"))
    month=as.numeric (format(realdate,"%m"))
    day=as.numeric (format(realdate,"%d"))
    
    ostocks<-cbind(dfdate,day,month,year,stocks)
    colnames(ostocks)
    
    "date"   "day"    "month"  "year"   "bpV"    "bpO"    "bpC"    "bpMN"   "bpMX"   "emdate" "emV"    "emO"    "emC"    "emMN"   "emMX" "chdate" "chV"   
    "cbO"    "chC"    "chMN"   "chMX"
    
    df <- data.frame(date = c("01-02-18", "02-20-18", "03-23-18"))
    df
          date
    1 01-02-18
    2 02-20-18
    3 03-23-18
    
    df$date <- as.Date(df$date, format="%m-%d-%y")
    df
            date
    1 2018-01-02
    2 2018-02-20
    3 2018-03-23
    
    library(lubridate)
    df$year <- year(ymd(df$date))
    df$month <- month(ymd(df$date)) 
    df$day <- day(ymd(df$date))
    df
            date year month day
    1 2018-01-02 2018     1   2
    2 2018-02-20 2018     2  20
    3 2018-03-23 2018     3  23