【问题标题】:Change numerical string to date format将数字字符串更改为日期格式
【发布时间】:2016-05-27 11:07:30
【问题描述】:

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

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

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

我试过这样做:

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

但得到了错误:

data$Date 中的错误:$ 运算符对原子向量无效

还尝试使用以下方法编辑日期格式:

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

该专栏返回了 NA。为什么?

【问题讨论】:

  • 试试as.Date(as.character(dat$Date), format="%d %m %y")

标签: r character insertion


【解决方案1】:

一种方法是使用来自lubridatedmy

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】:

    你可以的

    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
    

    【讨论】:

    • 你能解释一下 gsub 的作用吗?
    • 它用匹配和正斜杠替换所有匹配。匹配是任何两个字符后面没有跟由单词边缘提供的空字符串。
    猜你喜欢
    • 2021-05-07
    • 2022-07-04
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    相关资源
    最近更新 更多