簡體   English   中英

如何更改 R 數據框中的日期格式並添加到新列?

[英]How to change date format in R data frame and add to new column?

假設我有以下數據框,日期為 2020 年:

date
2020-01-01T05:00:00+0000
2020-02-01T05:00:00+0000
2020-01-01T05:00:00+0000
2020-03-01T05:00:00+0000

該列的type character

我想創建一個將返回的第二列。 Jan-20, Feb-20, etc. 即以下:

date                       date_name
2020-01-01T05:00:00+0000   Jan-20
2020-02-01T05:00:00+0000   Feb-20
2020-01-01T05:00:00+0000   Jan-20
2020-03-01T05:00:00+0000   Mar-20

請注意,例如-01-指的是一月。

有誰知道如何做到這一點?

試試這個。 您只需要年份和月份,因此您可以使用as.Date()format()來達到您的期望:

#Code
df$date_name <- format(as.Date(df$date),'%b-%Y')

Output:

df
                      date date_name
1 2020-01-01T05:00:00+0000  Jan-2020
2 2020-02-01T05:00:00+0000  Feb-2020
3 2020-01-01T05:00:00+0000  Jan-2020
4 2020-03-01T05:00:00+0000  Mar-2020

使用的一些數據:

#Data
df <- structure(list(date = c("2020-01-01T05:00:00+0000", "2020-02-01T05:00:00+0000", 
"2020-01-01T05:00:00+0000", "2020-03-01T05:00:00+0000")), row.names = c(NA, 
-4L), class = "data.frame")

一個data.table選項(但@Duck 的format方法更有效)

> setDT(df)[, date_name := paste0(month.abb[month(date)], "-", substr(year(date), 3, 4))][]
                       date date_name
1: 2020-01-01T05:00:00+0000    Jan-20
2: 2020-02-01T05:00:00+0000    Feb-20
3: 2020-01-01T05:00:00+0000    Jan-20
4: 2020-03-01T05:00:00+0000    Mar-20

我們可以使用來自zooas.yearmon

library(dplyr)
library(zoo)
df %>% 
    mutate(date_name = as.yearmon(date))

-輸出

#                      date date_name
#1 2020-01-01T05:00:00+0000  Jan 2020
#2 2020-02-01T05:00:00+0000  Feb 2020
#3 2020-01-01T05:00:00+0000  Jan 2020
#4 2020-03-01T05:00:00+0000  Mar 2020

數據

df <- structure(list(date = c("2020-01-01T05:00:00+0000", "2020-02-01T05:00:00+0000", 
"2020-01-01T05:00:00+0000", "2020-03-01T05:00:00+0000")), row.names = c(NA, 
-4L), class = "data.frame")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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