R格式化不均匀的日期

时间:2018-02-05 23:03:04

标签: r date

我有一个.csv数据集,它具有以下日期格式:

01/10/2013

但是有些事件具有以下格式:

13-14/10/2013

有谁知道如何格式化这个以便在“%d /%m /%Y”中找到一些东西?

3 个答案:

答案 0 :(得分:1)

这取决于。如果你想要10月14日,你需要

gsub("[[:digit:]]{1,2}-", "", "13-14/10/2013")

如果你想要10月13日,你需要

gsub("-[[:digit:]]{1,2}", "", "13-14/10/2013")

答案 1 :(得分:1)

如果您想保留两个日期, <div class="table"> <div class="row"> <div class="cell">Cell 1, Row 1</div> <div class="cell">Cell 2, Row 1</div> <div class="cell">Cell 3, Row 1</div> </div> <div class="row"> <div class="cell">Cell 1, Row 2</div> <div class="cell">Cell 2, Row 2</div> <div class="cell">Cell 3, Row 2</div> </div> <div class="row"> <div class="cell">Cell 1, Row 3</div> <div class="cell">Cell 2, Row 3</div> <div class="cell">Cell 3, Row 3</div> </div> </div>变为13-14/10/2013,您可以使用c("13/10/2013", "14/10/2013")tidyr分隔日期,那么几天,然后将所有东西重新组合在一起:

dplyr

答案 2 :(得分:0)

如果您的数据是这样的:

d <- c("01/10/2013", "10/01/2015", "13-14/10/2013") 

然后,您可以使用正则表达式捕获错误模式,然后在整个向量上调用gsub()以使用第一天(xx-yy)替换前导xx

gsub("^(\\d{2})\\-(\\d{2})/(\\d{2})/(\\d{4})$", "\\1/\\3/\\4", d)

或第二天(yy):

gsub("^(\\d{2})\\-(\\d{2})/(\\d{2})/(\\d{4})$", "\\2/\\3/\\4", d)

取决于哪种情况适合您的情况。