如何解决如何将零值0值删除为r中的一位数字?
我正在处理日期格式为YMD的时间序列数据,我想将零值移除为一位数字的月份(一月至九月)。如何在r中将其删除?
这是我当前日期格式的示例:“ 2009-05-01”“ 2009-06-01”“ 2009-07-01”“ 2009-08-01”“ 2009-09-01”。我希望我的日期格式为:“ 2009-5-01”,“ 2009-6-01”,“ 2009-7-01”,“ 2009-8-01”,“ 2009-9-01”。 请使用r代码删除零值有什么帮助
解决方法
您可以使用此正则表达式:
x <- c("2009-05-01","2009-06-01","2009-07-01","2009-08-01","2009-10-01")
sub('(\\d+-)0?(.*)','\\1\\2',x)
#[1] "2009-5-01" "2009-6-01" "2009-7-01" "2009-8-01" "2009-10-01"
此处的逻辑是在两个捕获组中提取数据。第一个捕获组使用-
提取年份值,第二个捕获组将忽略所有其他内容(如果存在的话,则为零)。
您还可以将lubridate
与sprintf
一起使用
library(lubridate)
x <- c("2009-05-01","2009-07-1","2009-1-01")
x <- ymd(x)
sprintf("%d-%d-%02d",year(x),month(x),day(x))
输出
[1] "2009-5-01" "2009-6-01" "2009-7-01" "2009-8-01" "2009-1-01"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。