假设我需要从1000000个随机数值序列中检索中值.
如果使用任何但是 STL ::名单,我没有(内置)的排序方式为中值计算序列.
如果使用STL :: list,我不能随机访问值来检索排序序列的中间(中位数).
是自己实现排序和使用例如STL :: vector更好,还是使用STL :: list并使用STL :: list :: iterator for-loop-walk到中值?后者似乎不那么开销,但也感觉更难看..
或者我有更多更好的选择吗?
我很好奇是否有人可以提出一种(更快)的方法来计算可变时间间隔(窗口)的滚动统计(滚动均值,中位数,百分位数等).
也就是说,假设有一个随机定时观察(即不是每日,或每周数据,观察只有时间戳,如在滴答数据中),并且假设您想查看中心和离散统计数据,您可以扩大并收紧计算这些统计数据的时间间隔.
我做了一个简单的for循环来做到这一点.但它显然运行得非常慢(实际上我认为我的循环仍在运行在我设置的一小部分数据样本上以测试其速度).我一直试图让ddply这样做 - 这对于每日统计数据来说似乎是不可能的 - 但我似乎无法摆脱它.
例:
样品设置:
df <- data.frame(Date = runif(1000,0,30))
df$Price <- I((df$Date)^0.5 * (rnorm(1000,30,4)))
df$Date <- as.Date(df$Date, origin = "1970-01-01")
Run Code Online (Sandbox Code Playgroud)
示例函数(运行非常慢,有很多观察结果
SummaryStats <- function(dataframe, interval){
# Returns daily simple summary stats,
# at varying intervals
# dataframe is the data frame in question, with Date and Price obs
# interval is the width of time to be treated as a day
firstDay <- min(dataframe$Date)
lastDay <- max(dataframe$Date)
result <- data.frame(Date = NULL,
Average = NULL, …Run Code Online (Sandbox Code Playgroud) 可能重复:
计算存储在Vector-C++中的值的中值?
我需要存储一组值,然后才能计算其中值.
用于存储这些值的c ++中最好的容器是什么,如何找到中位数?
(我可能也希望能够删除特定元素,所以我认为设置可能不是最佳选择...)
我是一名编程学生,对于我正在研究的项目,我必须做的事情是计算int值向量的中值,并且必须通过传递函数来完成.也将载体随机地使用C++,其我在code.I'm已经写下随机发生器mt19937为此使用的排序函数和向构件的功能,如最初产生.begin(),.end()和.size().
我应该确保找到向量的中值,然后输出它
我被困了,下面我已经把我的尝试包括在内了.那我哪里错了?如果您愿意给我一些指导或资源以便朝着正确的方向前进,我将不胜感激.
码:
#include<iostream>
#include<vector>
#include<cstdlib>
#include<ctime>
#include<random>
#include<vector>
#include<cstdlib>
#include<ctime>
#include<random>
using namespace std;
double find_median(vector<double>);
double find_median(vector<double> len)
{
{
int i;
double temp;
int n=len.size();
int mid;
double median;
bool swap;
do
{
swap = false;
for (i = 0; i< len.size()-1; i++)
{
if (len[i] > len[i + 1])
{
temp = len[i];
len[i] = len[i + 1];
len[i + 1] = temp;
swap = true;
} …Run Code Online (Sandbox Code Playgroud)