2015-01-26 6 views
-1

У меня есть 25 временных рядов ежемесячных возвратов разных портфелей в виде столбцов (S1B1, S1B2, S1B3, S1B4, S1B5, S2B1, S2B2, S2B3, S2B4, S2B5, (...), S5B5):Создание матрицы средств на основе временных рядов столбцов в R

S1B1 S1B2 S1B3 S1B4 S1B5 (...) S5B5 
0.2 0.1 2.1 3.2 1.2  0.3 
0.3 1.2 2.6 2.1 6.3  0.2 
0.5 0.5 0.5 2.2 6.2  1.2 
0.4 1.2 2.2 1.1 0.5  2.1 

Я хочу, чтобы создать матрицу 5x5, показывающее средство для каждой колонки следующим образом:

S1B1 S1B2 S1B3 S1B4 S1B5  
S2B1 S2B2 S2B3 S2B4 S2B5 
S3B1 S3B2 S3B3 S3B4 S3B5 
S4B1 S4B2 S4B3 S4B4 S4B5 
S5B1 S5B2 S5B3 S5B4 S5B5 
+1

что вы создаете эти матрицы? –

+0

К сожалению, я забыл упомянуть об этом. Я использую R. –

+1

Вам нужно предоставить более подробную информацию. Язык, структура данных, тип файла и т. Д. – Thomas

ответ

0

Это очень просто. Во-первых, вы должны рассчитать mean для каждого столбца, то вы должны в результате 1x25 устройств изменит вектор в 5x5 матрицы:

matrix(apply(data,2,mean), nrow=5, ncol=5, byrow=TRUE) 

apply(data,2,mean) вычисляет средние значения для каждого столбца data и matrix строит 5x5 матрицу из ее результатов.

+0

Большое спасибо! Работает отлично. –

1

Вы можете использовать функцию apply для вычисления среднего значения для каждый столбец.

Вы можете использовать его таким образом:

apply(M, 2, mean) # where M is your data (presumably a matrix or a data frame) 

И затем положить каждый результат в записи в вашей матрице.

1

Очевидным решением здесь является использование векторизованной функции colMeans (поскольку apply, являющийся контуром for, становится неэффективным по мере роста набора данных). Попробуйте это

matrix(colMeans(M), ncol = 5, byrow = TRUE) 
Смежные вопросы