as.Date 用字符向量生成 Nan
as.Date produces Nan with character vector
我对 R 中的 as.Date 函数感到疯狂。我只是不明白为什么我的代码不起作用。
在这里,您找到数据:
irates_monthly = c("2000-01", "2000-02", "2000-03", "2000-04", "2000-05", "2000-06", "2000-07", "2000-08", "2000-09", "2000-10", "2000-11", "2000-12", "2001-01", "2001-02", "2001-03", "2001-04")
属于 'character'.
类型
现在,这是我的代码:
as.Date(irates_monthly, format = '%Y-%m')
我唯一想要的是将字符向量 'irates_monthly' 转换为 Date 对象,这样我就可以在带有参数 'order.by'.[=13 的 xts() 函数中使用它=]
我相信这很简单,但我只是没有看到错误。很感谢任何形式的帮助!
另外通过Whosebug搜索也没有解决我的问题!
非常感谢任何提示或解决方案!
祝一切顺利,
曼纽尔
library(zoo)
irates_monthly = c("2000-01", "2000-02", "2000-03", "2000-04", "2000-05", "2000-06", "2000-07", "2000-08", "2000-09", "2000-10", "2000-11", "2000-12", "2001-01", "2001-02", "2001-03", "2001-04")
dts <- as.yearmon(irates_monthly)
> dts
[1] "Jan 2000" "Feb 2000" "Mar 2000" "Apr 2000" "May 2000" "Jun 2000" "Jul 2000" "Aug 2000" "Sep 2000" "Oct 2000" "Nov 2000" "Dec 2000" "Jan 2001" "Feb 2001"
[15] "Mar 2001" "Apr 2001"
dts2 <- as.Date(dts)
> dts2
[1] "2000-01-01" "2000-02-01" "2000-03-01" "2000-04-01" "2000-05-01" "2000-06-01" "2000-07-01" "2000-08-01" "2000-09-01" "2000-10-01" "2000-11-01" "2000-12-01"
[13] "2001-01-01" "2001-02-01" "2001-03-01" "2001-04-01"
如果您不想使用动物园,您可以添加一个月的第一天,这样“as.Date”就可以工作:
> as.Date(as.character(paste0(irates_monthly, '-01')))
[1] "2000-01-01" "2000-02-01" "2000-03-01" "2000-04-01" "2000-05-01" "2000-06-01" "2000-07-01" "2000-08-01" "2000-09-01" "2000-10-01" "2000-11-01" "2000-12-01"
[13] "2001-01-01" "2001-02-01" "2001-03-01" "2001-04-01"
我们可以使用 lubridate
中的 ymd
和 truncated
library(lubridate)
ymd(irates_monthly, truncated = 1)
#[1] "2000-01-01" "2000-02-01" "2000-03-01" "2000-04-01" "2000-05-01" "2000-06-01" "2000-07-01" "2000-08-01" "2000-09-01" "2000-10-01"
#[11] "2000-11-01" "2000-12-01" "2001-01-01" "2001-02-01" "2001-03-01" "2001-04-01"
我对 R 中的 as.Date 函数感到疯狂。我只是不明白为什么我的代码不起作用。
在这里,您找到数据:
irates_monthly = c("2000-01", "2000-02", "2000-03", "2000-04", "2000-05", "2000-06", "2000-07", "2000-08", "2000-09", "2000-10", "2000-11", "2000-12", "2001-01", "2001-02", "2001-03", "2001-04")
属于 'character'.
类型现在,这是我的代码:
as.Date(irates_monthly, format = '%Y-%m')
我唯一想要的是将字符向量 'irates_monthly' 转换为 Date 对象,这样我就可以在带有参数 'order.by'.[=13 的 xts() 函数中使用它=]
我相信这很简单,但我只是没有看到错误。很感谢任何形式的帮助! 另外通过Whosebug搜索也没有解决我的问题!
非常感谢任何提示或解决方案!
祝一切顺利,
曼纽尔
library(zoo)
irates_monthly = c("2000-01", "2000-02", "2000-03", "2000-04", "2000-05", "2000-06", "2000-07", "2000-08", "2000-09", "2000-10", "2000-11", "2000-12", "2001-01", "2001-02", "2001-03", "2001-04")
dts <- as.yearmon(irates_monthly)
> dts
[1] "Jan 2000" "Feb 2000" "Mar 2000" "Apr 2000" "May 2000" "Jun 2000" "Jul 2000" "Aug 2000" "Sep 2000" "Oct 2000" "Nov 2000" "Dec 2000" "Jan 2001" "Feb 2001"
[15] "Mar 2001" "Apr 2001"
dts2 <- as.Date(dts)
> dts2
[1] "2000-01-01" "2000-02-01" "2000-03-01" "2000-04-01" "2000-05-01" "2000-06-01" "2000-07-01" "2000-08-01" "2000-09-01" "2000-10-01" "2000-11-01" "2000-12-01"
[13] "2001-01-01" "2001-02-01" "2001-03-01" "2001-04-01"
如果您不想使用动物园,您可以添加一个月的第一天,这样“as.Date”就可以工作:
> as.Date(as.character(paste0(irates_monthly, '-01')))
[1] "2000-01-01" "2000-02-01" "2000-03-01" "2000-04-01" "2000-05-01" "2000-06-01" "2000-07-01" "2000-08-01" "2000-09-01" "2000-10-01" "2000-11-01" "2000-12-01"
[13] "2001-01-01" "2001-02-01" "2001-03-01" "2001-04-01"
我们可以使用 lubridate
中的 ymd
和 truncated
library(lubridate)
ymd(irates_monthly, truncated = 1)
#[1] "2000-01-01" "2000-02-01" "2000-03-01" "2000-04-01" "2000-05-01" "2000-06-01" "2000-07-01" "2000-08-01" "2000-09-01" "2000-10-01"
#[11] "2000-11-01" "2000-12-01" "2001-01-01" "2001-02-01" "2001-03-01" "2001-04-01"