Ранжирование xts объектов, представляющих некоторые свойства акций с использованием R - PullRequest
2 голосов
/ 21 февраля 2011

Я пытаюсь ранжировать акции порядка (например, путем возврата). В результате я хотел бы получить таблицу, содержащую названия акций в порядке возрастания / убывания (параметр этой функции ранжирования) с надлежащей обработкой NA (перемещается в конце каждой строки). Я действительно не могу придумать элегантный способ сделать это.

Ниже приведен пример того, что я хочу:

Это coreata объекта xts, представляющего некоторое свойство в разное время:

           john    joe     tina    jack    suzie   sasha   sven    luca   
2003-05-29 1       2       3       4       5       6       7       8  
2003-06-27 2       3       4       5       6       7       8       1  
2003-07-30 3       4       5       6       7       8       1       2
2003-07-31 NA      2       3       4       5       6       1       NA

Мне нужен фрейм данных, который в каждой строке (для каждой даты) отображает имя столбца из предыдущего фрейма данных с наилучшим рейтингом (на основе свойства) в столбце 1, второй лучший в столбце 2, ... Обратите внимание, что для В последней строке мне нужны случаи, когда NA перемещены в конец (последние два столбца) или пропущены ...

           [,1]    [,2]    [,3]    [,4]    [,5]    [,6]    [,7]    [,8]   
2003-05-29 "john"  "joe"   "tina"  "jack"  "suzie" "sasha" "sven"  "luca"  
2003-06-27 "luca"  "john"  "joe"   "tina"  "jack"  "suzie" "sasha" "sven"
2003-07-30 "sven"  "luca"  "john"  "joe"   "tina"  "jack"  "suzie" "sasha"
2003-07-31 "sven"  "joe"   "tina"  "jack"  "suzie" "sasha" "john"  "luca" 

Заранее спасибо за помощь. Будучи новичком в R, это доставляет мне много проблем ...

С уважением,
Samo.

1 Ответ

1 голос
/ 22 февраля 2011

Предположим, m - ваша исходная матрица (т. Е. Coredata из xts).Затем вы можете получить то, что хотите:

> nams <- colnames(m)
> t( apply(m, 1, function(r) nams[ order(r) ] ) )
           [,1]   [,2]   [,3]   [,4]   [,5]    [,6]    [,7]    [,8]   
2003-05-29 "john" "joe"  "tina" "jack" "suzie" "sasha" "sven"  "luca" 
2003-06-27 "luca" "john" "joe"  "tina" "jack"  "suzie" "sasha" "sven" 
2003-07-30 "sven" "luca" "john" "joe"  "tina"  "jack"  "suzie" "sasha"
2003-07-31 "sven" "joe"  "tina" "jack" "suzie" "sasha" "john"  "luca" 

Обратите внимание, что order(r) преобразует вектор r в вектор p, так что последовательность r[p[1]], r[ p[2] ], r[ p[3] ], ... находится в неубывающем порядке, ипо умолчанию задвигать NA до конца.

...