【发布时间】:2020-05-28 04:57:13
【问题描述】:
我正在尝试对数据中的日期列进行以下矢量化操作。我找到了一个非常不优雅的解决方案,并且确信有一个更干净整洁的解决方案。玩具示例:
index <- c(1,2)
input <- c('11-9-2019', '11/01/2019-01/31/2020')
output <- c('11-9-2019', '11-01-2019')
df_in <- data.frame('index'=index, 'data'=input)
df_out <- data.frame('index' =index, 'data'=output)
我可以使用 sapply 解决问题,如下所示:
df_out$data <- sapply(range(1:2), function(x) ifelse(str_length(df_in$data[x]) > 12,
str_sub(df_in$data[x], -10, -1),
df_in$data[x]))
df_out$data <- str_replace_all(df_out$data, '/', '-')
df_out$data
有没有办法做到这一点 a) 使用一条矢量化线 b) 而不像我在 str_sub 中那样依赖字符串索引?
谢谢!
【问题讨论】:
-
@Sotos 同意,但效果不佳。
-
您也应该通过查看
lubridate受益(请参阅下面的答案),尤其是如果您有多种格式
标签: r string dplyr substring sapply