簡體   English   中英

如何在 R 中的日期中僅轉換數字年份?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM