R 如何从日期中删除数字和字符,并将字符列转换为日期列

R 如何从日期中删除数字和字符,并将字符列转换为日期列,r,R,我有一个列名为perioden的数据帧。此列包含日期,但其格式为:2010JJ00、2011JJ00、2012JJ00、2013JJ00等。。 当我查看结构时,此列也是一个字符。我已经尝试了多种解决方案,但到目前为止,我的问题是如何将此列转换为日期,以及如何删除JJ00部分,以便您只看到列的年份格式。您可以尝试这种方法。使用gsub() #Data df <- data.frame(Date=c('2010JJ00', '2011JJ00', '2012JJ00', '2013JJ00')

我有一个列名为perioden的数据帧。此列包含日期,但其格式为:2010JJ00、2011JJ00、2012JJ00、2013JJ00等。。
当我查看结构时,此列也是一个字符。我已经尝试了多种解决方案,但到目前为止,我的问题是如何将此列转换为日期,以及如何删除JJ00部分,以便您只看到列的年份格式。

您可以尝试这种方法。使用
gsub()

#Data
df <- data.frame(Date=c('2010JJ00', '2011JJ00', '2012JJ00', '2013JJ00'),stringsAsFactors = F)
#Remove string
df$Date <- gsub('JJ00','',df$Date)
#Format to date, you will need a day and month
df$Date2 <- as.Date(paste0(df$Date,'-01-01'))

我尝试了@AllanCameron的方法,但它打印出的所有内容都是有原因的,仍然没有改变任何东西?它在控制台中显示了这一点

 [924] 2013 2014 2015 2016 2017 2018 2019 2010 2011 2012 2013 2014 2015
 [937] 2016 2017 2018 2019 2010 2011 2012 2013 2014 2015 2016 2017 2018
 [950] 2019 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2010 2011
 [963] 2012 2013 2014 2015 2016 2017 2018 2019 2010 2011 2012 2013 2014
 [976] 2015 2016 2017 2018 2019 2010 2011 2012 2013 2014 2015 2016 2017
 [989] 2018 2019 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019
 [ reached getOption("max.print") -- omitted 82300 entries ]

我们可以将
ymd
truncated
选项一起使用

library(lubridate)
library(stringr)
ymd(str_remove(df$Date, 'JJ\\d+'), truncated = 2)
#[1] "2010-01-01" "2011-01-01" "2012-01-01" "2013-01-01"
数据
df
as.numeric(gsub(“JJ00”),df$perioden))
其中
df
是数据帧的名称字符串的日期不够长,无法执行此操作。如果
JJ
暗示一个月,那么我们仍然需要一天(
00
不起作用)。如果没有,那么我们需要一个月和一天。您希望这些字符串的
Date
值是什么?
library(lubridate)
library(stringr)
ymd(str_remove(df$Date, 'JJ\\d+'), truncated = 2)
#[1] "2010-01-01" "2011-01-01" "2012-01-01" "2013-01-01"
df <- data.frame(Date=c('2010JJ00', '2011JJ00', '2012JJ00', '2013JJ00'), stringsAsFactors = FALSE)