代码之家  ›  专栏  ›  技术社区  ›  Bonono

将数字字符串更改为日期格式

  •  -2
  • Bonono  · 技术社区  · 10 年前

    我有以下日期为2015年9月23日的数字字符串数据帧。

    Date     Session
    230915       2  
    230915       2 
    230915       2   
    230915       2  
    230915       2  
    230915       2  
    

    我想把“Date”列改为“23/09/15”。我认为最简单的方法是在字符2和4之后插入“/”。

    我试着这样做:

    sub( '(?<=.{2})', '/', df$Date, perl=TRUE )
    

    但得到了错误:

    数据$Date:$运算符对原子向量无效

    还尝试使用以下命令编辑日期格式:

    df$Date <- as.Date(data1$Date, format="%d/%m/%Y")
    

    专栏带着NA的回来了。为什么?

    2 回复  |  直到 10 年前
        1
  •  2
  •   akrun    10 年前

    一种方法是使用 dmy 从…起 lubridate

    v1 <- dmy(df1$Date)
    v1
    #[1] "2015-09-23" "2015-09-23" "2015-09-23" "2015-09-23" "2015-09-23" "2015-09-23"
    

    最好将其存储为 Date 总体安排但是,如果需要的格式不同

    format(v1, "%d/%m/%y")
    #[1] "23/09/15" "23/09/15" "23/09/15" "23/09/15" "23/09/15" "23/09/15"
    
        2
  •  1
  •   lukeA    10 年前

    你可以的

    df <- read.table(header=T, text="Date     Session
    230915       2  ")  
    gsub( '(..)\\B', '\\1/', df$Date )
    # [1] "23/09/15"
    

    或

    (x <- as.Date(as.character(df$Date), format="%d%m%y"))
    # [1] "2015-09-23"
    format(x, "%d/%m/%y")
    # [1] "23/09/15"
    

    但是,如果 df 是向量,则没有 $ 子设置选项:

    df <- df$Date
    gsub( '(..)\\B', '\\1/', df$Date )
    # Error in df$Date : $ operator is invalid for atomic vectors
    
    推荐文章