如何使数据框日期列中的日期格式相同? [复制]
Posted
技术标签:
【中文标题】如何使数据框日期列中的日期格式相同? [复制]【英文标题】:How to make the format of dates same in the date column of a data frame? [duplicate] 【发布时间】:2021-12-02 13:04:44 【问题描述】:我有车站明智的排放数据框df
。日期(我从现有的.csv
file 导入)格式不规则。下面是一个示例数据框:
> df
Station Date Discharge
1 A 1981-01-01 0.1
2 A 1981-02-01 0.0
3 B 1981-03-01 0.0
4 B 1981-04-01 0.0
5 B 1/13/1981 0.4
6 C 1/14/1981 0.2
7 D 1/15/1981 0.6
8 D 1981-16-01 0.1
9 D 1981-17-01 0.5
由于这种数据的进一步处理是困难的。我尝试了以下方法:
> df$Date <- as.Date(df$Date, "%m/%d/%Y")
> df
Station Date Discharge
1 A 1981-01-01 0.1
2 A 1981-02-01 0.0
3 B 1981-03-01 0.0
4 B 1981-04-01 0.0
5 B NA 0.4
6 C NA 0.2
7 D NA 0.6
8 D 1981-16-01 0.1
9 D 1981-17-01 0.5
正在引入 NA。如何使所有日期的格式相同。将日期设为d-m-y
格式会很好。任何指导表示赞赏。谢谢。
【问题讨论】:
【参考方案1】:您可以先使用lubridate::parse_date_time
获取标准格式的数据。函数中可以传递多种格式。
lubridate::parse_date_time(df$Date, c('Ydm', 'mdY'))
#[1] "1981-01-01 UTC" "1981-01-02 UTC" "1981-01-03 UTC" "1981-01-04 UTC" "1981-01-13 UTC"
#[6] "1981-01-14 UTC" "1981-01-15 UTC" "1981-01-16 UTC" "1981-01-17 UTC"
然后使用format
以您希望的任何格式获取数据。
format(lubridate::parse_date_time(df$Date, c('Ydm', 'mdY')), '%d-%m-%Y')
#[1] "01-01-1981" "02-01-1981" "03-01-1981" "04-01-1981" "13-01-1981" "14-01-1981"
#[7] "15-01-1981" "16-01-1981" "17-01-1981"
请注意,format
的输出是类字符而不是日期。日期在 R 中只能有一种格式,即Ymd
。
as.Date(lubridate::parse_date_time(df$Date, c('Ydm', 'mdY')))
#[1] "1981-01-01" "1981-01-02" "1981-01-03" "1981-01-04" "1981-01-13" "1981-01-14"
#[7] "1981-01-15" "1981-01-16" "1981-01-17"
【讨论】:
以上是关于如何使数据框日期列中的日期格式相同? [复制]的主要内容,如果未能解决你的问题,请参考以下文章