我们可以Date在删除'with 之后转换为类gsub,然后使用format来获得预期的输出
format(as.Date(gsub("'", '', v1)), "'%m/%d/%Y'")
#[1] "'10/24/2015'" "'10/25/2015'"
Run Code Online (Sandbox Code Playgroud)
或者不使用gsub删除',我们也可以'在format内部指定as.Date
format(as.Date(v1, "'%Y-%m-%d'"), "'%m/%d/%Y'")
#[1] "'10/24/2015'" "'10/25/2015'"
Run Code Online (Sandbox Code Playgroud)
如果我们使用,这可以变得更紧凑 library(lubridate)
library(lubridate)
format(ymd(v1), "'%m/%d/%Y'")
#[1] "'10/24/2015'" "'10/25/2015'"
Run Code Online (Sandbox Code Playgroud)
如果我们不需要'在输出中,我们不必在格式中指定,
format(ymd(v1), "%m/%d/%Y")
#[1] "10/24/2015" "10/25/2015"
Run Code Online (Sandbox Code Playgroud)
或者我们只能gsub通过将角色捕获为一组来完成此操作.在下面的代码中,我们将前4个字符(.{4})作为一组捕获,方法是用括号括起来,然后匹配-,然后捕获接下来的两个字符,然后-捕获最后两个字符.在替换中,我们可以根据需要对捕获组进行洗牌.在这种情况下,第二个捕获组应该是first(\\2)后跟/,然后是第三个(\\3)依此类推......
gsub('(.{4})-(.{2})-(.{2})', '\\2/\\3/\\1', v1)
#[1] "'10/24/2015'" "'10/25/2015'"
Run Code Online (Sandbox Code Playgroud)
为了避免报价,
gsub('.(.{4})-(.{2})-(.{2}).', '\\2/\\3/\\1', v1)
#[1] "10/24/2015" "10/25/2015"
Run Code Online (Sandbox Code Playgroud)
此外,还有其他方法,如拆分字符串
vapply(strsplit(v1, "['-]"), function(x) paste(x[c(3,4,2)], collapse='/'), character(1))
#[1] "10/24/2015" "10/25/2015"
Run Code Online (Sandbox Code Playgroud)
或者像以前一样用str_extract_all和提取数字部分paste.
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"
Run Code Online (Sandbox Code Playgroud)
v1 <- c("'2015-10-24'", "'2015-10-25'")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
399 次 |
| 最近记录: |