首页 > 解决方案 > 对 yearmon 对象进行子集化

问题描述

我有月度数据

library(zoo); library(data.table)
dat <- data.table(month=as.yearmon(paste0("2019-0",1:9)))
> dat
      month
1: Jan 2019
2: Feb 2019
3: Mrz 2019
4: Apr 2019
5: Mai 2019
6: Jun 2019
7: Jul 2019
8: Aug 2019
9: Sep 2019

我想将其细分为 2019 年 5 月之后的几个月。而

dat[month=="Jun 2019"]

作品,

> dat[month > "May 2019"]
Empty data.table (0 rows and 1 cols): month
> dat[month%in%c("Jun 2019","Jul 2019")]
Empty data.table (0 rows and 1 cols): month

不要。有诀窍吗?

标签: rdatetimesubsetzoo

解决方案


实际上它确实有效。修复我们的双引号:

library(data.table)
library(zoo)

dat <- data.table(month=as.yearmon(paste0("2019-0",1:9), "%Y-%m"))

dat[month > "May 2019"]
##       month
## 1: Jun 2019
## 2: Jul 2019
## 3: Aug 2019
## 4: Sep 2019

语言

比较将使用当前有效的语言。例如,如果我们将当前会话设置为法语:

Sys.setlocale(locale = "French")
dat[ month > "mai 2019" ]
##         month
## 1:  juin 2019
## 2: juil. 2019
## 3:  août 2019
## 4: sept. 2019

我们也可以通过使用月份数字而不是名称以独立于语言的方式来做到这一点:

dat[ month > "2019-05" ]
##       month
## 1: Jun 2019
## 2: Jul 2019
## 3: Aug 2019
## 4: Sep 2019

笔记

这样做足以创建示例:

dat <- data.table(month = as.yearmon(paste0("2019-", 1:9)))

推荐阅读