X Y
1 A
2 B
3 C
4 D
5 E
6 F
X Y
1 A (Group 1)
2 B
----
1 A (Group 2)
2 B
3 C
----
2 B (Group 3)
3 C
4 D
----
3 C (Group 4)
4 D
5 E
----
4 D (Group 5)
5 E
6 F
----
5 E (Group 6)
6 F
grouping <- dat %>% select(X) %>% rowwise %>% do(data_frame(Group=.$X, X = (.$X-1):(.$X+1)))
left_join(grouping, dat) %>% group_by(Group)