我的日期值如下
"'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
去除'
,我们可以指定'
也在format
内as.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_all
和paste
ing提取数字部分。
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] 删除。
我来说两句