我定义了以下数据框
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中的五个组?感谢帮助
由于 帕拉姆
答案 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)