Сортируйте данные по INDUSTRY_NUMBER Trading_Date
, используйте INDUSTRY_NUMBER
в качестве группы, определите переменную времени.
proc sort data=have;
by industry_number trading_date;
run;
Затем преобразуйте свои данные во временные ряды, чтобы устранить любые временные промежутки. Установите любые пропущенные дни как предыдущее значение, поскольку оно не изменяется в эти торговые дни (например, выходные, праздничные дни и т. Д.).
proc timeseries data=have
out=have_ts;
by industry_number;
id trading_date interval=day
setmissing=previous
accumulate=average
;
var value_weighted_return;
run;
Наконец, возьмите выходные данные временных рядов и конвертируйте их из дня в неделю. Поскольку вы используете веса, вы можете использовать average
, а не total
.
proc expand data=have_ts
out=have_ts_week
from=day
to=week
;
by industry_number;
id trading_date;
convert Value_weighted_return / method=aggregate observed=average;
run;
Из MSDN:
Используемый в небезопасном контексте кода для выделения блока памяти на стеке.
Одна из основных функций C# - то, что Вы не должны обычно получать доступ к памяти непосредственно, как Вы сделали бы в использовании C/C++ malloc
или new
. Однако, если Вы действительно хотите явно выделить некоторую память, Вы можете, но C# считает это "небезопасным", таким образом, можно только сделать это, если Вы компилируете с unsafe
установка. stackalloc
позволяет Вам выделять такую память.
Вы почти наверняка не должны использовать его для написания управляемого кода. Выполнимо, что в некоторых случаях Вы могли написать более быстрый код при доступе к памяти непосредственно - это в основном позволяет Вам использовать управление указателем, которое удовлетворяет некоторым проблемам. Если у Вас нет определенной проблемы, и небезопасный код является единственным решением затем, Вам, вероятно, никогда не будет нужно это.
Paul,
Поскольку все здесь сказали, что ключевое слово направляет время выполнения для выделения на стеке, а не "куче". Если Вы интересуетесь точно, что это означает, проверьте эту статью.
http://msdn.microsoft.com/en-us/library/cx9s2sy4.aspx
это ключевое слово используется для работы с небезопасным управлением памятью. При помощи его у Вас есть способность использовать указатель (мощная и болезненная функция в C/C++)
stackalloc
направляет время выполнения .NET для выделения памяти на стеке.
Это похоже на Steve, на которого указывают, только используемого в небезопасном контексте кода (например, когда Вы хотите использовать указатели).
Если Вы не будете использовать небезопасный код в своем приложении C#, то Вам никогда не будет нужно это.
Stackalloc будет выделять данные на стеке, что можно использовать для избежания мусора, который будет генерироваться при многократном создании и уничтожении массивов типов значений внутри метода.
public unsafe void DoSomeStuff()
{
byte* unmanaged = stackalloc byte[100];
byte[] managed = new byte[100];
//Do stuff with the arrays
//When this method exits, the unmanaged array gets immediately destroyed.
//The managed array no longer has any handles to it, so it will get
//cleaned up the next time the garbage collector runs.
//In the mean-time, it is still consuming memory and adding to the list of crap
//the garbage collector needs to keep track of. If you're doing XNA dev on the
//Xbox 360, this can be especially bad.
}