R 计数具有相同/缺少值的连续行
我有一个包含不同传感器测量值的时间序列数据集。传感器软件存在一些缺陷,导致测量值丢失。我添加了缺失的测量时间,结果在值列中出现了NAs。数据集如下所示:R 计数具有相同/缺少值的连续行,r,dataframe,time-series,sequence,R,Dataframe,Time Series,Sequence,我有一个包含不同传感器测量值的时间序列数据集。传感器软件存在一些缺陷,导致测量值丢失。我添加了缺失的测量时间,结果在值列中出现了NAs。数据集如下所示: df <- structure(list(time_id = 1:10, value = c(-1.80603125680195, -0.582075924689333, NA, NA, -0.162309523556819, NA, NA, N
df <- structure(list(time_id = 1:10, value = c(-1.80603125680195, -0.582075924689333,
NA, NA, -0.162309523556819, NA, NA, NA, 1.6059096288573, NA),
is_missing = c(FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE,
TRUE, FALSE, TRUE)), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -10L))
df
非常感谢您的帮助 这是一个使用ave+rle的基本R解决方案
下面是一个使用ave+rle的基本R解决方案
还有一个想法。在这里,我们使用is.na捕获NAs并在出现非na时更改组,即
df %>%
group_by(grp = cumsum(c(1, diff(is.na(value)) != 0))) %>%
mutate(seq_NA = seq(n()))
这就给了,
还有一个想法。在这里,我们使用is.na捕获NAs并在出现非na时更改组,即
df %>%
group_by(grp = cumsum(c(1, diff(is.na(value)) != 0))) %>%
mutate(seq_NA = seq(n()))
这就给了,
您的输出似乎与OPs预期输出不一致您的输出似乎与OPs预期输出不一致
> df
time_id value is_missing group seq_NA
1 1 -1.8060313 FALSE 1 1
2 2 -0.5820759 FALSE 1 2
3 3 NA TRUE 2 1
4 4 NA TRUE 2 2
5 5 -0.1623095 FALSE 3 1
6 6 NA TRUE 4 1
7 7 NA TRUE 4 2
8 8 NA TRUE 4 3
9 9 1.6059096 FALSE 5 1
10 10 NA TRUE 6 1
df %>%
group_by(grp = cumsum(c(1, diff(is.na(value)) != 0))) %>%
mutate(seq_NA = seq(n()))
# A tibble: 10 x 5
# Groups: grp [6]
time_id value is_missing grp seq_NA
<int> <dbl> <lgl> <dbl> <int>
1 1 -1.81 FALSE 1 1
2 2 -0.582 FALSE 1 2
3 3 NA TRUE 2 1
4 4 NA TRUE 2 2
5 5 -0.162 FALSE 3 1
6 6 NA TRUE 4 1
7 7 NA TRUE 4 2
8 8 NA TRUE 4 3
9 9 1.61 FALSE 5 1
10 10 NA TRUE 6 1