转换日期格式中的R
问题描述:
我尝试做在R上的日期格式转换和我遇到这样的问题:我原来的日期是转换日期格式中的R
"Dec-2011"
我要的是成为
2011-12
然后我试图
as.Date("Dec-2011",format = "%b-%Y")
它产生NA
我做了一些搜索,我发现,如果你键入
as.Date(gsub("^", "01-", "Dec-2011"), format="%d-%b-%Y")
它会给你
2011-12-01
我理解的功能“GSUB”在这里所做的,这是替换所有的“^”在“01 - ”的“2011年12月”中。但是,正如您在“2011年12月”中看到的那样,没有“^”,我在考虑它应该是“01-”还是“-01”?我有点困惑。这个“gsub”真的在这里做什么?我应该如何在R中执行日期格式转换?
答
^
是代表字符串开头的元字符。在gsub
示例中,pattern
给出replacement
(“01-”)的位置,因此它仅在开始时替换。假设,如果我们去掉^
,它将取代
gsub("", "01-", "Dec-2011")
#[1] "01-D01-e01-c01--01-201-001-101-101-"
gsub("^", "01-", "Dec-2011")
#[1] "01-Dec-2011"
gsub
意味着全球替代了 “01-” 之后的每一个字符,但我们可以sub
太
sub("", "01-", "Dec-2011")
#[1] "01-Dec-2011"
一次更换对于这种情况,它可能是更容易使用paste
paste0("01-", "Dec-2011")
#[1] "01-Dec-2011"
'paste'会更容易。 'paste0(“01-”,“Dec-2011”)' – akrun
@akrun谢谢,这是有效的。更进一步,我正在查看包含“2011年12月”,“2008年5月”这样的东西的整个专栏。我觉得as.Date(gsub(“^”,“01-”,“Dec-2011”),format =“%d-%b-%Y”)这个命令工作得很好,但我真的无法弄清楚为什么它有效,例如,我在“2011年12月”中没有看到“^”,但似乎这个gsub函数仍然是正确的。你有关于它是如何工作的想法? – ftxx
''yearmon''类可以不需要一天重复一年/一个月的对象。这些对象排序正确,不需要与任何一个月的任意一天相关联,如第一个或最后一个。 '库(动物园); as.yearmon(“Dec-2011”,format =“%b-%Y”)' –