我正在努力根据一个连续变量来划分数据集-让我们称之为“时间”-从1开始,每行递增1(1,2,3,4,5,...),但有时我会得到一些缺失值,所以我得到一些“跳跃”(例如。1、2、3、4、5、6、10、11、12、20、21、22、23)。这些跳跃是随机的,所以它们之间不会得到相同数量的缺失值。当这些“跳跃”发生时,我想将数据集拆分为多个数据集,因此在我的示例中,它将给予一个从1到6的数据集,另一个从10到12,另一个从20到23。知道怎么做吗那会是个很大的帮助。。
p5cysglq1#
我们可以在用cumsum(c(1, diff(Time) != 1))定义连续组之后使用group_split:
cumsum(c(1, diff(Time) != 1))
group_split
library(dplyr) library(purrr) library(tibble) tibble(Time = c(1, 2, 3, 4, 5, 6, 10, 11, 12, 20, 21, 22, 23)) %>% group_split(group = cumsum(c(1, diff(Time) != 1))) %>% map(~ select(., -group)) [[1]] # A tibble: 6 × 1 Time <dbl> 1 1 2 2 3 3 4 4 5 5 6 6 [[2]] # A tibble: 3 × 1 Time <dbl> 1 10 2 11 3 12 [[3]] # A tibble: 4 × 1 Time <dbl> 1 20 2 21 3 22 4 23
1条答案
按热度按时间p5cysglq1#
我们可以在用
cumsum(c(1, diff(Time) != 1))
定义连续组之后使用group_split
: