【发布时间】:2017-05-26 09:30:18
【问题描述】:
我的简化数据如下所示:
set.seed(1453); x = sample(0:1, 10, TRUE)
date = c('2016-01-01', '2016-01-05', '2016-01-07', '2016-01-12', '2016-01-16', '2016-01-20',
'2016-01-20', '2016-01-25', '2016-01-26', '2016-01-31')
df = data.frame(x, date = as.Date(date))
df
x date
1 2016-01-01
0 2016-01-05
1 2016-01-07
0 2016-01-12
0 2016-01-16
1 2016-01-20
1 2016-01-20
0 2016-01-25
0 2016-01-26
1 2016-01-31
我想计算x == 1 在指定时间段内出现的次数,例如从当前日期起 14 天和 30 天(但不包括当前条目,如果它是 x == 1。所需的输出将如下所示:
solution
x date x_plus14 x_plus30
1 2016-01-01 1 3
0 2016-01-05 1 4
1 2016-01-07 2 3
0 2016-01-12 2 3
0 2016-01-16 2 3
1 2016-01-20 2 2
1 2016-01-20 1 1
0 2016-01-25 1 1
0 2016-01-26 1 1
1 2016-01-31 0 0
理想情况下,我希望它出现在dplyr 中,但这不是必须的。任何想法如何实现这一目标?非常感谢您的帮助!
【问题讨论】:
-
两件事。 1)尽量不要以函数命名对象(sample也是函数)。 2)不清楚你在问什么
-
您需要今天 + 14 次观察(行)还是今天 + 14 天?后者要复杂得多。
-
你的输出正确吗? bcoz
x_plus14[1]应该是2 -
不确定
as_date来自哪里,但您可以简单地执行sample = data.frame(x, date = as.Date(date)),同时避免依赖并使用cbind转换为矩阵并返回 -
感谢所有有用的 cmets。 @Sotos:现在我已经更改了 df 名称