Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最小值、最大值、n个不同顶部/底部值的平均值,并将它们与时间序列数据一起绘制在R中的同一图形上_R_Ggplot2_Statistics_Time Series - Fatal编程技术网

最小值、最大值、n个不同顶部/底部值的平均值,并将它们与时间序列数据一起绘制在R中的同一图形上

最小值、最大值、n个不同顶部/底部值的平均值,并将它们与时间序列数据一起绘制在R中的同一图形上,r,ggplot2,statistics,time-series,R,Ggplot2,Statistics,Time Series,我正在处理一个带有unix时间戳的大型时间序列数据集(几乎有100K条记录)。我需要从值列中选择min、mean、max、avg\u of theu lower\u n、avg\u of theu top\u n。我可以得到min,mean,max如下: tapply(df$value, df$pattern, min) tapply(df$value, df$pattern, mean) tapply(df$value, df$pattern, max) 现在,我需要为每个模式(组)在另外两

我正在处理一个带有unix时间戳的大型时间序列数据集(几乎有100K条记录)。我需要从
列中选择
min、mean、max、avg\u of theu lower\u n、avg\u of theu top\u n
。我可以得到
min,mean,max
如下:

tapply(df$value, df$pattern, min)
tapply(df$value, df$pattern, mean)
tapply(df$value, df$pattern, max)
现在,我需要为每个模式(组)在另外两列中获得
最低n个不同值
最高n个不同值
平均值
。我可以从下面得到最低和最高n
平均值
(比如5个值),但我认为
平均值
不是由每组(模式)的不同5个值计算出来的,在这里我需要知道,我如何才能做到这一点

setDT(df_stat) #requires Data.table
df_n[order(value)][, list(mean_of_low_5=mean(value[1:5])), by=pattern]
df_n[order(-value)][, list(mean_of_top_5=mean(value[1:5])), by=pattern]
我们高度赞赏任何简单的方法

样本数据-

df <- structure(list(pattern = c(462L, 462L, 462L, 462L, 462L, 462L, 
462L, 462L, 462L, 462L, 462L, 463L, 463L, 463L, 463L, 463L, 463L, 
463L, 463L, 463L, 463L, 463L, 463L, 463L, 463L, 464L, 464L, 464L, 
464L, 464L, 464L, 464L, 464L, 464L, 464L, 464L, 464L, 464L, 465L, 
465L, 465L, 465L, 465L, 466L, 466L, 466L, 466L, 466L, 466L, 466L, 
466L, 466L, 466L, 466L, 466L, 961L, 961L, 961L, 961L, 961L, 961L, 
961L), value = c(5.8e+10, 4.35e+10, 3.96e+10, 3.6e+10, 3.48e+10, 
3.3e+10, 3.3e+10, 3.3e+10, 3.3e+10, 3.3e+10, 3.3e+10, 1e+09, 
1e+09, 1e+09, 1e+09, 1e+09, 1e+09, 1e+09, 1e+09, 1e+09, 1e+09, 
1e+09, 1e+09, 1e+09, 1e+09, 3.3e+10, 3.3e+10, 3.3e+10, 3.3e+10, 
3.3e+10, 3.3e+10, 3.3e+10, 3.3e+10, 3.3e+10, 3.3e+10, 3.3e+10, 
3.3e+10, 3.3e+10, 3e+10, 3e+10, 3e+10, 3e+10, 3e+10, 3.3e+10, 
3.3e+10, 3.3e+10, 3.3e+10, 3.3e+10, 3.3e+10, 3.3e+10, 3.3e+10, 
3.3e+10, 3.2e+10, 3.2e+10, 3.2e+10, 2.6e+10, 2.6e+10, 2.6e+10, 
2.6e+10, 2.6e+10, 2.6e+10, 2.6e+10), timestamp = c(1590604157L, 
1590604157L, 1590604157L, 1590604157L, 1590604157L, 1590604157L, 
1590604157L, 1590604157L, 1590604157L, 1590604157L, 1590604157L, 
1590604170L, 1590604170L, 1590604170L, 1590604170L, 1590604170L, 
1590604170L, 1590604170L, 1590604170L, 1590604170L, 1590604170L, 
1590604170L, 1590604170L, 1590604170L, 1590604170L, 1590604213L, 
1590604213L, 1590604213L, 1590604213L, 1590604213L, 1590604213L, 
1590604213L, 1590604213L, 1590604213L, 1590604213L, 1590604213L, 
1590604213L, 1590604213L, 1590604226L, 1590604226L, 1590604226L, 
1590604226L, 1590604226L, 1590604239L, 1590604239L, 1590604239L, 
1590604239L, 1590604239L, 1590604239L, 1590604239L, 1590604239L, 
1590604239L, 1590604239L, 1590604239L, 1590604239L, 1590610895L, 
1590610895L, 1590610895L, 1590610895L, 1590610895L, 1590610895L, 
1590610895L)), class = "data.frame", row.names = c(NA, -62L))

df您可以使用
dplyr
在一个管道中进行所有计算:

library(dplyr)

df %>%
  group_by(pattern) %>%
  summarise(min_val = min(value), 
            max_val = max(value), 
            mean_val = mean(value), 
            lowest_n_val = mean(head(unique(sort(value)), 5)),
            highest_n_val = mean(tail(unique(sort(value)), 5)))

您可以添加
na.rm=如果您的数据中有
NA
,则上述所有函数均为TRUE。

Perfect@RonakShah