r - ifelse 定义正确条件的函数问题
问题描述
我无法通过搜索功能找到以下问题的答案:
为什么给定的ifelse()
条件不能按我的意图工作?
我得到了一个数据集,它错误地有一个日期的开放文本字段,所以我得到了人们填写日期的多种方式。到现在为止,我真的接近了一些有用的东西,但我打算下一步是制作每个 mm/yy 条目那是在 2000 年之前,通过 ifelse 函数输入 mm/19yy 并没有给我一个正确的结果:
Dates <- c("10/19", "04/2019", "O5/1992", "03/92")
ifelse(str_length(Dates)==5 & str_sub(Dates,4,5)>20, stri_sub(Dates, 4, 3) <- 19, Dates)
结果如下所示:
[1] "10/1919" "04/192019" "O5/191992" "19"
虽然我希望它看起来像这样:
1] "10/19" "04/2019" "O5/1992" "03/1992"
任何帮助都非常感谢!
解决方案
这并没有给出您所显示的预期输出,但我认为最好将日期转换为标准日期,以便更容易使用它们。
Dates <- c("10/19", "04/2019", "O5/1992", "03/92")
new_Date <- as.Date(lubridate::parse_date_time(paste0('1/', Dates), c('dmY', 'dmy')))
new_Date
#[1] "2019-10-01" "2019-04-01" "1992-05-01" "1992-03-01"
然后你可以format
按照你想要的方式这些日期:
format(new_Date, '%Y-%m')
#[1] "2019-10" "2019-04" "1992-05" "1992-03"
推荐阅读
- amazon-web-services - 通过 MYSQL 工作台连接到 RDS 实例,无需静态 IP
- java - 是否可以在 Java 中调用最终对象?
- vb.net - 来自游戏服务器的 UDP 统计响应
- c++ - 初始化 struct{enum;union;} 数组的问题
- c++ - 在 C++ 中从套接字接收短数组
- r - 按组对定性变量进行排序并保留索引
- php - 通过 REST API 批量创建 WooCommerce 产品时清理内容
- java - 如何将 YMD LDAP 时间戳转换为 Java 中的日期时间?
- java - 如何在 Java 中舍入到 2.5?
- gdb - 是否可以为使用 ptrace/gdb 停止的进程获取内核回溯?