在R中格式化日期

希瑟·凯图拉(Heather Keturah)

我的日期值如下

"'2015-10-24'"
class Character

我正在尝试格式化此值,使其看起来像这样 '10/24/2015'

我知道如何使用noquote函数并去除引号和gsub函数以替换为-/但我不确定如何切换年,日期和月,使其看起来像是“ 10/24/2015”

任何帮助深表感谢。

阿克伦

我们可以Date在删除'with之后将其转换为class gsub,然后使用format来获得预期的输出

format(as.Date(gsub("'", '', v1)), "'%m/%d/%Y'")
#[1] "'10/24/2015'" "'10/25/2015'"

使用或不使用的gsub去除',我们可以指定'也在formatas.Date

format(as.Date(v1, "'%Y-%m-%d'"), "'%m/%d/%Y'") 
#[1] "'10/24/2015'" "'10/25/2015'"

如果我们使用的话,这可以变得更紧凑 library(lubridate)

library(lubridate)
format(ymd(v1), "'%m/%d/%Y'")
#[1] "'10/24/2015'" "'10/25/2015'"

如果我们不需要'在输出中使用,则无需在格式中进行指定,

format(ymd(v1), "%m/%d/%Y")
#[1] "10/24/2015" "10/25/2015"

或者,我们可以仅gsub通过将字符捕获为一组来执行此操作在下面的代码中,我们将前四个字符(.{4}捕获为一组,方法是用括号括起来,然后匹配-,然后捕获后两个字符,然后捕获,然后捕获-后两个字符。在替换中,我们可以根据需要对捕获组进行改组。在这种情况下,第二个捕获组应该首先出现(\\2/,然后是第三个(\\3),依此类推...

 gsub('(.{4})-(.{2})-(.{2})', '\\2/\\3/\\1', v1)
 #[1] "'10/24/2015'" "'10/25/2015'"

为了避免引号,

 gsub('.(.{4})-(.{2})-(.{2}).', '\\2/\\3/\\1', v1)
 #[1] "10/24/2015" "10/25/2015"

此外,还有其他方法,例如分割字符串

vapply(strsplit(v1, "['-]"), function(x) paste(x[c(3,4,2)], collapse='/'), character(1))
#[1] "10/24/2015" "10/25/2015"

像以前一样使用str_extract_allpasteing提取数字部分

 library(stringr)
 vapply(str_extract_all(v1, '\\d+'), function(x) 
               paste(x[c(2,3,1)], collapse='/'), character(1))   
 #[1] "10/24/2015" "10/25/2015"

数据

v1 <- c("'2015-10-24'", "'2015-10-25'")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章