r - 如何用特定值替换日期中的所有日期值?
问题描述
我有以下 m/d/y 格式的日期向量:
(dates<-c("1/31/2018", "2/31/2018", "3/0/2018", "4/31/2018", "9/5/2018"))
[1] "1/31/2018" "2/31/2018" "3/0/2018" "1/5/2018"
如果您仔细观察,其中一些日期是荒谬的 - 例如,二月没有 31 天,并且 0 不是一个月中的有效日期。我想用“1”替换所有天的值。我希望我的结果如下所示:
dates
[1] "1/1/2018" "2/1/2018" "3/1/2018" "4/1/2018" "9/1/2018"
解决方案
要转换坏的只有首先尝试转换为Date
类,如果这给了 NA 替换中间部分。
ifelse(is.na(as.Date(dates, "%m/%d/%Y")), sub("/.*/", "/1/", dates), dates)
## [1] "1/31/2018" "2/1/2018" "3/1/2018" "4/1/2018" "9/5/2018"
或全部转换:
sub("/.*/", "/1/", dates)
## [1] "1/1/2018" "2/1/2018" "3/1/2018" "4/1/2018" "9/1/2018"
这是转换所有这些的第二种方法:
with(read.table(text = dates, sep = "/"), paste(V1, 1, V3, sep = "/"))
## [1] "1/1/2018" "2/1/2018" "3/1/2018" "4/1/2018" "9/1/2018"
推荐阅读
- entity-framework - 具有多个 Where Average 的动态 Linq 查询
- java - 是否有一个函数可以用来在 if 语句中挑选出 Java 中的一系列大数
- javascript - JavaScript + numjs - 用切片填充数组
- linq - 在并行上下文中刷新令牌的 C# UserCredential 问题
- python - 如何读取 python 请求发送的 post 请求的标头数据?
- python - 使用 ZeroPadding+Convolution 而不是带有 padding='same' 的 Convolution
- typescript - 如何使用 ts-node 运行安装在 node_modules 中的 ts 脚本
- node.js - 如何获取node.js请求中止的系统网络统计数据?
- javascript - 错误连接拒绝来自另一台设备的 localhost:5000/user
- javascript - 将单列放在数据表/yajra 数据表中多个父列的子行中