Вот как это сделать.Я использую dplyr
до summarise
по группам.Сначала я вычисляю разностный вектор, используя задержку в один.Затем я создаю столбец условия, который равен 1, если diff> 0,01 и 0 в противном случае.Затем я использую cumsum
для группирования.coalesce
используется для начала работы с АН.Используя группы, теперь вы можете summarise
.
x <- c(0.06997360, 0.09154285, 0.10607553, 0.10607631, 0.10652390, 0.10857691,
0.10858633,0.10858633,0.10870369,0.18790912,0.18792473,0.19509030,
0.20040993,0.22548593,0.22550167,0.22593338,0.22893103,0.23196562,
0.25901025,0.30231663,0.30245132,0.30246287,0.34893528,0.34938294,
0.34943865,0.45200544,0.45658957,0.45673815,0.46432602,0.48493226,
0.58318915,0.58618472,0.66311458,0.66311774,0.69777062,0.69782017,
0.70456743,0.70754232,0.71668759,0.71744870,0.71780786,0.77227751,
0.79785928,0.79823416,0.79831632,0.79832545,0.79863813,0.79880086,
0.91610076,0.91611498,0.91611830,0.91612582,0.91612582,0.91614856)
library(dplyr)
as.data.frame(x)%>%
mutate(diff=x-lag(x),
condition=(diff>0.01)*1,
group=cumsum(coalesce(condition, 0)))%>%
group_by(group)%>%
summarise(x_mean=mean(x))%>%
as.data.frame()
group x_mean
1 0 0.06997360
2 1 0.09154285
3 2 0.10758986
4 3 0.19283352
5 4 0.22756353
6 5 0.25901025
7 6 0.30241027
8 7 0.34925229
9 8 0.45741479
10 9 0.48493226
11 10 0.58468694
12 11 0.66311616
13 12 0.70852067
14 13 0.77227751
15 14 0.79836237
16 15 0.91612237