R如何将双格式数据转换为日期时间

时间:2020-09-21 20:45:27

标签: r

我有一个从1926年到2020年的月度数据集,其日期是两倍,其格式为:

日期

192607

192608

192609

我想要这样的数据时间:

1926-07

1926-08

1926-09

我尝试了as.datatime,但是我得到了错误的日期,因为它把192607作为日期的数字参考。 有人可以帮我吗?谢谢。

2 个答案:

答案 0 :(得分:1)

尝试一下。为了格式化为日期,您必须具有年,月和日的值。在您的日期中,缺少日期,因此您可以将<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.dotchat"> <application> <activity android:name=".LoginActivity" android:label="@string/activity_login" android:theme="@style/AppTheme.NoActionBar" /> </application> </manifest> 添加到日期链中并设置为日期格式:

01

输出:

#Code
df$Date2 <- as.Date(paste0(df$Date,'01'),'%Y%m%d')
df$Date3 <- format(df$Date2,'%Y-%m')

使用了一些数据:

    Date      Date2   Date3
1 192607 1926-07-01 1926-07
2 192608 1926-08-01 1926-08
3 192609 1926-09-01 1926-09

答案 1 :(得分:1)

我们可以将ymd中的lubridatetruncated选项一起使用

library(lubridate)
library(dplyr)
df %>%
     mutate(Date2 = ymd(Date, truncated = 2), Date3 = format(Date2, '%Y-%m'))
#  Date      Date2   Date3
#1 192607 1926-07-01 1926-07
#2 192608 1926-08-01 1926-08
#3 192609 1926-09-01 1926-09

或使用zoo

format(zoo::as.yearmon(as.character(df$Date), format = "%Y%m"), '%Y-%m')
#[1] "1926-07" "1926-08" "1926-09"

我们也可以将其视为字符串,并使用regex进行转换(尽管建议以Date转换的方式进行转换,以避免出现任何错误)

df$Date2 <- sub("^(....)", "\\1-", df$Date)
df$Date2
#[1] "1926-07" "1926-08" "1926-09"

数据

df <- structure(list(Date = 192607:192609), class = "data.frame", 
  row.names = c(NA, 
-3L))