如何将两个连接字符串变量转换为 %m%Y 格式
How to convert two concatenate string vars to %m%Y format
我创建了一个名为 long.oto.yeni$Date
的字符变量。现在我需要将此变量转换为 %m/%Y
格式以绘制 ggplot2
中的时间序列图。所以我无法使用 zoo
包中的 yearmon()
函数。
但是当我使用 as.Date()
函数时,输出创建了 NA
个值。我怎样才能克服这个问题?
谢谢。
long.oto.yeni$Date <- paste0(long.oto.yeni$Month, "/", long.oto.yeni$Year)
long.oto.yeni$Date <- as.Date(long.oto.yeni$Date, "%m/%Y")
除了月和年之外,您还需要天组件才能使用 as.Date
形成日期。您可以任意选择每个日期的第一天:
long.oto.yeni$Date <- as.Date(paste0("01-",
long.oto.yeni$Month, "-",
long.oto.yeni$Year), "%d-%m-%Y")
为了完整起见的一个小评论:您也可以使用 zoo
包,但是您需要这样 as.yearmon()
和 as.Date()
的组合
long.oto.yeni$Date <- paste0(long.oto.yeni$Month, "/", long.oto.yeni$Year)
long.oto.yeni$Date <- as.Date(as.yearmon(long.oto.yeni$Date, "%m/%Y"))
@Dirk Eddelbuettel 提出的另一种解决方案是使用 anytime
包:
library("anytime")
long.oto.yeni$Date <- anydate(paste0(long.oto.yeni$Year, "-", long.oto.yeni$Month))
请注意,在这两种方法中,您都将获得该月的第一天,这意味着结果将与@Tim Biegeleisen 的回答相同
我们可以使用 "yearmon"
class 来避免必须处理月份的日期。将 long.oto.yeni
读入动物园对象 oto
并将其索引转换为 class "yearmon"
。然后用 autoplot.zoo
.
绘图
library(zoo)
library(ggplot2)
long.oto.yeni <- data.frame(Month = 1:5, Year = 2000, y = (1:5)^2) # input
to_yearmon <- function(y, m) as.yearmon(paste(y, m, sep = "-"))
oto <- read.zoo(long.oto.yeni, index = c("Year", "Month"), FUN = to_yearmon)
autoplot(oto) + scale_x_yearmon() + xlab("")
我创建了一个名为 long.oto.yeni$Date
的字符变量。现在我需要将此变量转换为 %m/%Y
格式以绘制 ggplot2
中的时间序列图。所以我无法使用 zoo
包中的 yearmon()
函数。
但是当我使用 as.Date()
函数时,输出创建了 NA
个值。我怎样才能克服这个问题?
谢谢。
long.oto.yeni$Date <- paste0(long.oto.yeni$Month, "/", long.oto.yeni$Year)
long.oto.yeni$Date <- as.Date(long.oto.yeni$Date, "%m/%Y")
除了月和年之外,您还需要天组件才能使用 as.Date
形成日期。您可以任意选择每个日期的第一天:
long.oto.yeni$Date <- as.Date(paste0("01-",
long.oto.yeni$Month, "-",
long.oto.yeni$Year), "%d-%m-%Y")
为了完整起见的一个小评论:您也可以使用 zoo
包,但是您需要这样 as.yearmon()
和 as.Date()
的组合
long.oto.yeni$Date <- paste0(long.oto.yeni$Month, "/", long.oto.yeni$Year)
long.oto.yeni$Date <- as.Date(as.yearmon(long.oto.yeni$Date, "%m/%Y"))
@Dirk Eddelbuettel 提出的另一种解决方案是使用 anytime
包:
library("anytime")
long.oto.yeni$Date <- anydate(paste0(long.oto.yeni$Year, "-", long.oto.yeni$Month))
请注意,在这两种方法中,您都将获得该月的第一天,这意味着结果将与@Tim Biegeleisen 的回答相同
我们可以使用 "yearmon"
class 来避免必须处理月份的日期。将 long.oto.yeni
读入动物园对象 oto
并将其索引转换为 class "yearmon"
。然后用 autoplot.zoo
.
library(zoo)
library(ggplot2)
long.oto.yeni <- data.frame(Month = 1:5, Year = 2000, y = (1:5)^2) # input
to_yearmon <- function(y, m) as.yearmon(paste(y, m, sep = "-"))
oto <- read.zoo(long.oto.yeni, index = c("Year", "Month"), FUN = to_yearmon)
autoplot(oto) + scale_x_yearmon() + xlab("")