Из пакета dplyr вы можете использовать функции filter()
и group_by()
для вычисления среднего значения цены (и sd) по акциям.
Предположим, ваш набор данных df
:
df %>%
filter(Date >= input$dateRange[1] & Date <= input$dateRange[2]) %>%
filter(Industry %in% input$industry_choices) %>%
group_by(Industry, stock) %>%
summarise(
price_mean = mean(price),
price_sd = mean(sd)
)
В Shiny входные данные рассматриваются как строки, иногда вам нужно будет использовать group_by_()
. Например, если пользователь может выбрать переменную для группировки по: group_by_(input$grouping_choice)
Математика:: Случайный:: Автоматический модуль CPAN, реализовывая известный вихрь Мерсенна PRNG.
Попытайтесь использовать LFSR - Линейный Сдвиговый регистр Обратной связи.. Первая ссылка на внешние ссылки имеет все, что необходимо произвести любое число битов случайности. Хорошая вещь об этом состоит в том, что это легко реализовать и может быть сделано с помощью всей целочисленной математики.
Я использовал его с успехом на 8 051 проекте. С жемчугом это будет снимок.
Обновление:
Вот быстрая реализация жемчуга LFSR на 8 битов:
use strict;
use warnings;
use List::Util qw(reduce);
use vars qw($a $b);
print 'Taps: ', set_taps( 8, 7, 2, 1 ), "\n";
print 'Seed: ', seed_lfsr( 1 ), "\n";
print read_lfsr(), "\n" for 1..10;
BEGIN {
my $tap_mask;
my $lfsr = 0;
sub read_lfsr {
$lfsr = ($lfsr >> 1) ^ (-($lfsr & 1) & $tap_mask );
return $lfsr;
}
sub seed_lfsr {
$lfsr = shift || 0;
$lfsr &= 0xFF;
}
sub set_taps {
my @taps = @_;
$tap_mask = reduce { $a + 2**$b } 0, @taps;
$tap_mask >>= 1;
$tap_mask &= 0xFF;
return $tap_mask;
}
}
Этот код является просто прототипом. Если бы я хотел использовать его в производстве, то я, вероятно, перенес бы его в объект и сделал бы размер регистра настраивающимся. Затем мы были бы избавлены от тех противных совместно используемых переменных.