在 R 中从整数更改为日期

Change from integer to date in R

我有下一个数据框,我想将月份和年份变量的格式更改为日期

data.frame':    450 obs. of  3 variables:
 $ month : int  11 12 1 2 3 4 5 6 7 8 ...
 $ year  : int  2010 2010 2011 2011 ...
 $ num3  : num  157 124.3 196.5 197 70.8 ... 

我试了一下,但出现错误:

as.Date(df$month, format="%m")

Error in as.Date.numeric(df$month, format = "%m") : 
  'origin' must be supplied

我该如何解决?另外,我想用月和年创建新变量

很明显,您想要的不仅仅是一个月。因此,您可以同时使用月份和年份,但您还需要一个月中的完整一天,所以我们假设第 15 天。

   df$real_Date <- as.Date( paste(df$year,df$month, 15, sep="-") )

> month <- scan( text=" 11 12 1 2 3 4 5 6 7 8")
Read 10 items
> year <- scan( text="  2010 2010 2011 2011 2011 2011 2011 2011 2011 2011")
Read 10 items
> num3  <- scan( text=" 157 124.3 196.5 197 70.8 ")
Read 5 items
> df <- data.frame(month,year,num3)
> df
   month year  num3
1     11 2010 157.0
2     12 2010 124.3
3      1 2011 196.5
4      2 2011 197.0
5      3 2011  70.8
6      4 2011 157.0
7      5 2011 124.3
8      6 2011 196.5
9      7 2011 197.0
10     8 2011  70.8
> df$real_Date <- as.Date( paste(df$year,df$month, 15, sep="-") )
> df
   month year  num3  real_Date
1     11 2010 157.0 2010-11-15
2     12 2010 124.3 2010-12-15
3      1 2011 196.5 2011-01-15
4      2 2011 197.0 2011-02-15
5      3 2011  70.8 2011-03-15
6      4 2011 157.0 2011-04-15
7      5 2011 124.3 2011-05-15
8      6 2011 196.5 2011-06-15
9      7 2011 197.0 2011-07-15
10     8 2011  70.8 2011-08-15

我们可以使用 lubridate 包中的 make_date

library(dplyr)
library(lubridate)
df %>% 
  mutate(date = make_date(year, month))

输出:

  month  year  num3 date      
  <dbl> <dbl> <dbl> <date>    
1    11  2010  157  2010-11-01
2    12  2010  124. 2010-12-01
3     1  2011  196. 2011-01-01
4     2  2011  197  2011-02-01

我们还可以使用 base R

中的 ISOdate
df$date <-  with(df, as.Date(ISOdate(year, month, 1)))

数据

df <- data.frame(month = c(11, 12, 1, 2), year = c(2010, 2010, 2011, 2011))