【发布时间】:2014-10-30 14:55:19
【问题描述】:
我有一个数据集,每个 date 有两个值,如下所示:
date x y
1 2013-05-01 1 2
2 2013-05-02 2 2
3 2013-05-03 3 2
date 的格式为as.Date,使用包lubridate。
现在我想要两个值的mean,除了某个时间跨度,我想使用x的值。
我尝试了以下方法:
mean=(x+y)/2
newdata=ifelse((data$date < 2013-10-01 | date$date > 2014-04-09), mean, x)
但如果所有日期都使用mean。
是否可以对日期使用大于/小于关系? 关于如何使这项工作的任何建议?
提前致谢
【问题讨论】:
-
你能使用像你输入
data()时看到的那样的可重现数据集吗?顺便说一句,您所说的“格式”是什么意思……您是指关于班级的事情吗?如果我理解正确,as.Date是一个基本函数,但它不是一个类,格式由origin语句给出... -
我用:
date=c("2013-05-01", "2013-05-02", "2013-05-03", "2013-05-04") x=c(1,2,3,4) y=c(2,2,2,2) library(lubridate) date=as.Date(as.character(date), format="%Y-%m-%d") data=data.frame(date, x,y)生成了示例数据,例如上面将更改为:mean=(x+y)/2 newdata=ifelse((date < 2013-05-02 | date > 2013-05-03), mean, x) -
是的,我的意思是上课。还是 R 新手,抱歉 :) 输入
class(date)会导致Date -
好的,谢谢。当我们可以快速复制您的步骤时,这总是有帮助的。看起来您还有其他几个人在积极提供解决方案,所以我将把它留给他们。不用担心类/格式混乱。欢迎来到 R :) 干杯。
标签: r date if-statement as.date