使用带有dplyr的日期列表创建数据框的日期列的组

时间:2017-05-25 15:31:28

标签: r group-by dplyr

我定义了以下数据框

d = as.Date('2015-01-01') + runif(100,0,365)
newData = data.frame('dates' =d, 'num' = c(1:100))

newData:

     dates      num
1   2015-05-08   1
2   2015-08-18   2
3   2015-06-18   3
4   2015-01-26   4
5   2015-04-04   5
6   2015-01-22   6
7   2015-01-14   7
8   2015-04-21   8
9   2015-07-19   9
10  2015-01-25  10
11  2015-05-15  11
...

接下来我定义一个日期列表c如下

a = as.Date('2015-01-01')
b = a + 365
c = seq.Date(a,b,(b-a)/4)

C:

[1] "2015-01-01" "2015-04-02" "2015-07-02" "2015-10-01" "2016-01-01"

接下来我要实现的是为条件newData $ dates<创建5组newData。 c [i],其中i = 1..5 {这只是一个插图而非实际代码,我想用dplyr来实现这个}

一旦我拥有了这些组,我就可以将它们输入到我的下一段代码中。为此,我想在dplyr中使用group_by。

多次迭代后尝试使用以下命令

result = group_by(newData, new = dates < c)

没有得到我想要的5组,但得到了以下结果:

Source: local data frame [100 x 3]
Groups: new [2]

        dates   num   new
       <date> <int> <lgl>
1  2015-05-08     1 FALSE
2  2015-08-18     2 FALSE
3  2015-06-18     3  TRUE
4  2015-01-26     4  TRUE
5  2015-04-04     5  TRUE
6  2015-01-22     6 FALSE
7  2015-01-14     7  TRUE
8  2015-04-21     8  TRUE
9  2015-07-19     9  TRUE
10 2015-01-25    10  TRUE
# ... with 90 more rows  

仔细观察后发现比较是逐个元素的,即newData $ date的前5个元素与c list&amp;的5个元素进行比较。这继续下去。 任何方式解决&amp;使用dplyr获取tbl中的五个组?感谢帮助

由于 帕拉姆

1 个答案:

答案 0 :(得分:0)

这样的东西?

result = newData %>% group_by(group1 = dates < c[1]) %>% 
 group_by(group2 = dates < c[2], add = TRUE) %>%  
 group_by(group3 = dates < c[3], add = TRUE) %>% 
 group_by(group4 = dates < c[4], add = TRUE) %>% 
 group_by(group5 = dates < c[5], add = TRUE)