更改日期格式 - 转换为日期 Class
Change Date format - Convert to Date Class
我有一列日期是作为字符读入的。我想用我想要的格式(比如美国风格,08/28/2020)生成数据 class。
但是,所有更改格式、生成字符 class 或生成标准格式 (2020-08-28) 的日期 class 的解决方案
这是一个可重现的例子:
df1 <- data.frame(date=c("08/27/2020", "08/28/2020", "08/29/2020"), cases=c(5,6,7))
class(df1$date)
df1$date1<- format(as.Date(df1$date, format = "%m/%d/%Y"), "%m/%d/%Y")
class(df1$date1)
df1$date2<-as.Date(parse_date_time(df1$date,"%m/%d/%Y"))
class(df1$date2)
df1$date3<- as.Date(df1$date, format = "%m/%d/%Y")
class(df1$date3)
df1
如您所见,data1 具有我想要的格式,但它不是日期 class。此外,date2 和 date3 是 Date class 而它们会产生不需要的格式。
date cases date1 date3 date2
1| 08/27/2020 | 5 | 08/27/2020 |2020-08-27 | 2020-08-27|
2| 2020 年 8 月 28 日 | 6 | 08/28/2020 |2020-08-28 | 2020-08-28|
3| 2020 年 8 月 29 日 | 7 | 08/29/2020 |2020-08-29 | 2020-08-29|
我哪里错了?
A Date
class 在 R 中总是显示为“2020-08-27”。这是 R 的标准 Date
。要将其重新格式化为不同的格式,您可以使用 strftime
。它假定日期 class 并输出具有所需格式的 character
对象,例如
df1$date2
[1] "2020-08-27" "2020-08-28" "2020-08-29"
class(df1$date2)
[1] "Date"
strftime(df1$date2, format="%m/%d/%Y")
[1] "08/27/2020" "08/28/2020" "08/29/2020"
class(strftime(df1$date2, format="%m/%d/%Y"))
[1] "character"
处理日期和时间时 lubridate
包真的很方便:https://lubridate.tidyverse.org/.
在这种情况下,我们可以对日期和日期 1 使用 mdy
函数(月、日、年)。
library(lubridate)
library(dplyr)
df1 %>%
mutate(across(c(date, date1), mdy))
date cases date1 date3
<date> <dbl> <date> <date>
1 2020-08-27 5 2020-08-27 2020-08-27
2 2020-08-28 6 2020-08-28 2020-08-28
3 2020-08-29 7 2020-08-29 2020-08-29
我有一列日期是作为字符读入的。我想用我想要的格式(比如美国风格,08/28/2020)生成数据 class。 但是,所有更改格式、生成字符 class 或生成标准格式 (2020-08-28) 的日期 class 的解决方案 这是一个可重现的例子:
df1 <- data.frame(date=c("08/27/2020", "08/28/2020", "08/29/2020"), cases=c(5,6,7))
class(df1$date)
df1$date1<- format(as.Date(df1$date, format = "%m/%d/%Y"), "%m/%d/%Y")
class(df1$date1)
df1$date2<-as.Date(parse_date_time(df1$date,"%m/%d/%Y"))
class(df1$date2)
df1$date3<- as.Date(df1$date, format = "%m/%d/%Y")
class(df1$date3)
df1
如您所见,data1 具有我想要的格式,但它不是日期 class。此外,date2 和 date3 是 Date class 而它们会产生不需要的格式。
date cases date1 date3 date2
1| 08/27/2020 | 5 | 08/27/2020 |2020-08-27 | 2020-08-27|
2| 2020 年 8 月 28 日 | 6 | 08/28/2020 |2020-08-28 | 2020-08-28|
3| 2020 年 8 月 29 日 | 7 | 08/29/2020 |2020-08-29 | 2020-08-29|
我哪里错了?
A Date
class 在 R 中总是显示为“2020-08-27”。这是 R 的标准 Date
。要将其重新格式化为不同的格式,您可以使用 strftime
。它假定日期 class 并输出具有所需格式的 character
对象,例如
df1$date2
[1] "2020-08-27" "2020-08-28" "2020-08-29"
class(df1$date2)
[1] "Date"
strftime(df1$date2, format="%m/%d/%Y")
[1] "08/27/2020" "08/28/2020" "08/29/2020"
class(strftime(df1$date2, format="%m/%d/%Y"))
[1] "character"
处理日期和时间时 lubridate
包真的很方便:https://lubridate.tidyverse.org/.
在这种情况下,我们可以对日期和日期 1 使用 mdy
函数(月、日、年)。
library(lubridate)
library(dplyr)
df1 %>%
mutate(across(c(date, date1), mdy))
date cases date1 date3
<date> <dbl> <date> <date>
1 2020-08-27 5 2020-08-27 2020-08-27
2 2020-08-28 6 2020-08-28 2020-08-28
3 2020-08-29 7 2020-08-29 2020-08-29