【发布时间】:2017-11-03 21:29:22
【问题描述】:
我目前正忙于构建一个 R 脚本来格式化一些数据以供以后使用。我想将日期分成四等分,并为此编写了以下函数。
dates_to_quarters <- function(x){
x <- as.numeric(month(x))
x[x > 0 & x < 4 & is.na(x) == FALSE] <- "Q1"
x[x >= 4 & x < 7 & is.na(x) == FALSE] <- "Q2"
x[x >= 7 & x < 10 & is.na(x) == FALSE] <- "Q3"
x[x >= 10 & x < 13 & is.na(x) == FALSE] <- "Q4"
return(x)
}
我检查了 NA 值,因为我是 R 新手,不知道它们在比较中的表现如何。请注意,x 是使用anytime() 函数格式化的日期向量。
在日期向量上使用上述函数后,几乎所有记录都有正确的类。除了那些应该属于第三季度的。他们将月份的数字作为一个值。
当我将 Q1 和 Q2 的前两个语句移到其他语句下方时,代码可以正常工作。
我开始使用控制台并注意到,在仅执行 Q1 的语句后,使用 Q3 的布尔选择不再产生结果。之后我注意到“Q1”> 7 产生 TRUE。
有人知道发生了什么吗? (你可能已经猜到了,我是新的 R)
编辑:
示例数据(传递给函数)
20-01-2017
20-04-2017
20-09-2017
20-12-2017
预期输出:
Q1
Q2
Q3
Q4
这就是我得到的:
Q1
Q2
9
Q4
【问题讨论】:
-
请提供一个小型数据集,我们可以在其上运行您的函数。您也可以使用
cut函数。 -
你能发布一些你得到的与你期望得到的样本输入和输出吗?在此处查看更多信息:stackoverflow.com/questions/5963269/…
-
请点击@Marwaha提供的链接,并以易于粘贴的形式提供数据。
-
我提供了一些示例数据
标签: r