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"
我有一个包含每月数据的数据框,一列包含年份,一列包含月份。我想将它们合并到一个日期格式的列中,从这个开始:
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"