Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.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

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中导出数据时,如何将Mon年的字符串转换为正确的日期格式?_R_Date - Fatal编程技术网

在R中导出数据时,如何将Mon年的字符串转换为正确的日期格式?

在R中导出数据时,如何将Mon年的字符串转换为正确的日期格式?,r,date,R,Date,当我将R中的数据作为csv导出时,我试图确保As_of_Dt正确地转换为日期。目前,当我将数据导出到excel时。它错误地转换了_Dt的As_。月份基本保持不变,但年份变为日期,年份变为当前年份(2020年)。如果截止日期为1月18日,则在excel中变为1/18/20。我正试图阻止这种事情发生 我希望本专栏导出如下内容: 当字符串为“1月18日”时为1/1/18 目前,我试过了 Data$As_of_Dt2<- zoo::as.Date(zoo::as.yearmon(Data$As_o

当我将R中的数据作为csv导出时,我试图确保As_of_Dt正确地转换为日期。目前,当我将数据导出到excel时。它错误地转换了_Dt的As_。月份基本保持不变,但年份变为日期,年份变为当前年份(2020年)。如果截止日期为1月18日,则在excel中变为1/18/20。我正试图阻止这种事情发生

我希望本专栏导出如下内容: 当字符串为“1月18日”时为1/1/18

目前,我试过了

Data$As_of_Dt2<- zoo::as.Date(zoo::as.yearmon(Data$As_of_Dt, "%y-%b"))

Data$As_of_Dt2您可以使用
strtime

strptime(dat, "%d-%b")
# [1] "2020-11-20 CET"  "2020-11-15 CET"  "2020-01-20 CET"  "2020-06-20 CEST"
# [5] "2020-02-20 CET"  "2020-04-19 CEST" "2020-12-16 CET"  "2020-08-20 CEST"
# [9] "2020-01-17 CET"  "2020-01-16 CET"  "2020-10-17 CEST" "2020-06-19 CEST"
# [13] "2020-08-17 CEST" "2020-05-16 CEST" "2020-10-16 CEST" "2020-08-18 CEST"
# [17] "2020-11-19 CET"  "2020-01-15 CET"  "2020-12-17 CET"  "2020-11-18 CET" 

数据:


dat我们可以使用
as.yearmon

library(zoo)
as.Date( as.yearmon(dat, "%d-%b"))
#[1] "2020-11-01" "2020-11-01" "2020-01-01" "2020-06-01" "2020-02-01" "2020-04-01" "2020-12-01" "2020-08-01"
#[9] "2020-01-01" "2020-01-01" "2020-10-01" "2020-06-01" "2020-08-01" "2020-05-01" "2020-10-01" "2020-08-01"
#[17] "2020-11-01" "2020-01-01" "2020-12-01" "2020-11-01"
as.Date(as.yearmon(sub("^([A-Za-z]+)-(\\d+)$", "\\2-\\1", dat), "%d-%b"))
如果我们有一些混合格式,即
%b-%d
以及文章中显示的格式,一个选项是使用
sub
重新排列子字符串,使其成为单一格式,然后将
应用为.yearmon

library(zoo)
as.Date( as.yearmon(dat, "%d-%b"))
#[1] "2020-11-01" "2020-11-01" "2020-01-01" "2020-06-01" "2020-02-01" "2020-04-01" "2020-12-01" "2020-08-01"
#[9] "2020-01-01" "2020-01-01" "2020-10-01" "2020-06-01" "2020-08-01" "2020-05-01" "2020-10-01" "2020-08-01"
#[17] "2020-11-01" "2020-01-01" "2020-12-01" "2020-11-01"
as.Date(as.yearmon(sub("^([A-Za-z]+)-(\\d+)$", "\\2-\\1", dat), "%d-%b"))
数据
dat您是否可以使用
dput
来显示示例如果
As\u of_Dt
列是字符或因子,是否可能某些值具有前导/尾随空格?这里最明显的解释是,并非所有的值都符合
%y-%b
。使用
ym创建测试数据我认为问题在于,有时它是年-月,有时它是月-年。我不知道为什么从excel导出文档时没有反映出这一点。是否有一个函数可以将这两种情况转换为指定的格式?我意识到有两种不同的情况,一种是月份在1月18日之前,另一种是年份在1月18日之前。我想这就是为什么这段代码对我不起作用的原因。有没有一种替代方法可以将这两种情况转换为日期格式。谢谢