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

Change numerical string to date format

我有以下日期为 23/09/15 的数字字符串数据框。

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。为什么?

你可以

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

一种方法是使用 lubridate

中的 dmy
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"