R:只有年月的日期格式

R: date format with just year and month

我有一个包含每月数据的数据框,一列包含年份,一列包含月份。我想将它们合并到一个日期格式的列中,从这个开始:

Year    Month     Data
2020        1       54
2020        2       58
2020        3       78
2020        4       59

为此:

   Date    Data
2020-01      54
2020-02      58
2020-03      78
2020-04      59

也许最简单的方法是为所有日期任意设置一天(例如 01)?因此日期间隔将被保留。

data<-data.frame(Year=c(2020,2020,2020,2020), Month=c(1,2,3,4),  Data=c(54,58,78,59))
data$Date<-gsub(" ","",paste(data$Year,"-",data$Month,"-","01"))
data$Date<-as.Date(data$Date,format="%Y-%m-%d")

我认为你不能在不显示日期的情况下在 R 中表示日期格式。如果你想要一个字符列,就像你的例子一样,你可以这样做:

> x <- data.frame(Year = c(2020,2020,2020,2020), Month = c(1,2,3,4), Data = c(54,58,78,59))
> x$Month <- ifelse(nchar(x$Month == 1), paste0(0, x$Month), x$Month) # add 0 behind.
> x$Date <- paste(x$Year, x$Month, sep = '-')
> x
  Year Month Data    Date
1 2020    01   54 2020-01
2 2020    02   58 2020-02
3 2020    03   78 2020-03
4 2020    04   59 2020-04
> class(x$Date)
[1] "character"

如果您想要日期类型的列,则必须添加:

x$Date <- paste0(x$Date, '-01')
x$Date <- as.Date(x$Date, format = '%Y-%m-%d')

x

class(x$Date)

你可以使用sprintf-

sprintf('%d-%02d', data$Year, data$Month)
#[1] "2020-01" "2020-02" "2020-03" "2020-04"