[英]how to convert numeric only year in Date in R?
我有一個帶有年份數字列的數據框,但我想將其轉換為年份日期。
我的數據框
library(tidyverse)
date2<-c('01/01/2000','08/08/2000','16/03/2001')
name<-c('A','B','C')
df<-data.frame(date2,name)
但是當我執行命令mutate
時:
df2<-df%>%
mutate(date2=dmy(date2))%>%
mutate(Year2=year(date2))
str(df2)
'data.frame': 3 obs. of 3 variables:
$ date2: Date, format: "2000-01-01" "2000-08-08" "2001-03-16"
$ name : chr "A" "B" "C"
$ Year2: num 2000 2000 2001
但我希望 Year2 是 Date 而不是數字。
如何解決這個問題?
您可以使用round_date
、 [EDIT] 或更好的floor_date
來舍入到年初(請參閱下面的評論和答案):
library(lubridate)
df2 <- df %>%
mutate(date2 = dmy(date2)) %>%
mutate(year_internal = round_date(date2,'year')) %>%
mutate(year_out = format(year_internal,'%Y'))
df2 %>% select(date2, name, year_internal, year_out)
date2 name year_internal year_out
1 2000-01-01 A 2000-01-01 2000
2 2000-08-08 B 2001-01-01 2001
3 2001-03-16 C 2001-01-01 2001
我驗證了round_date()
會帶來問題,因為它租用的日期是從 2000 年到 2001 年,這可能是統計數據中的問題。
根據另一篇文章,我發現了同一年的floor_date()
。
date2<-c('01/01/2000','08/08/2000','16/03/2001')
name<-c('A','B','C')
df<-data.frame(date2,name)
df2 <- df %>%
mutate(date2 = dmy(date2)) %>%
mutate(year_date = floor_date(date2,'year'))
df2
看到 200-08-08 現在四舍五入到 2000 年
date2<date> name<chr> year_date<date>
2000-01-01 A 2000-01-01
2000-08-08 B 2000-01-01
2001-03-16 C 2001-01-01
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.