r - R中按年切割时的不良结果

标签 r

函数cut.Date中有一个不受欢迎的功能,该功能在12月31日应用时将在明年添加为一个级别:

cut(as.Date("2013-12-31"), "year")
[1] 2013-01-01
Levels: 2013-01-01 2014-01-01

这在以后处理数据时给我带来很多麻烦,我想知道如果没有此怪异功能,是否还有其他选择可以按年切割数据?

最佳答案

如果x是您的日期向量,则可以按以下步骤删除空白级别:

x = droplevels(x)

也许有一种方法可以避免一开始就创建一个空关卡,但是至少这是一种摆脱它的简单方法。

使用您的示例:
droplevels(cut(as.Date("2013-12-31"), "year"))
[1] 2013-01-01
Levels: 2013-01-01

另一种选择是直接从日期对象中提取年份。例如:
library(lubridate)
year(as.Date(c("2013-12-31","2014-12-09","2014-11-10")))

[1] 2013 2014 2014

这不是一个因素,但是如果愿意,您可以始终将其转换为一个。

关于r - R中按年切割时的不良结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27409843/

相关文章:

emacs - Rscript 有 Emacs 模式吗?

r - 在 R 中,使用工作目录等设置临时执行操作

R 构建包在 zip 上失败

r - 有条件地创建单个变量

r - 如何在markdown中部署kable table Latex格式

r - 使用 foreach 输出两个对象

r - adf.test 使用 xts 返回 p > 0.99,但使用 coredata(xts) 返回 p < 0.01

r - 无法从shinyapps.io连接到Microsoft Azure

R 强制参数缺失 - R_MissingArg

r - 使用累加识别 R 中的连续重复项