我有一个从1926年到2020年的月度数据集,其日期是两倍,其格式为:
日期
192607
192608
192609
我想要这样的数据时间:
1926-07
1926-08
1926-09
我尝试了as.datatime
,但是我得到了错误的日期,因为它把192607作为日期的数字参考。
有人可以帮我吗?谢谢。
答案 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
中的lubridate
与truncated
选项一起使用
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))