2013-09-10 5 views
-1

У меня есть поле, содержащее некоторые тикеры, которые являются аргументом функции. Пример:Объединение кадра данных R

aTickers <- c("GOOG Equity", "AAPL Equity") 

Этот аргумент может различаться по длине; разрешено содержать 1 тикер, 2 тикера или даже 10 тикеров. Данные удаляются в стек кадров данных. Я хотел бы разделить данные, используя информацию о тикерах. Я пользуюсь функцией

mX <- split(mY, mY$ticker) 

Я получаю данные, разделенные на основе значения тикера. Таким образом, я могу использовать mX $ 'GOOG Equity', чтобы вызывать данные о ценах акций Google.

Как я могу связать имя пользователя с помощью mX, чтобы я мог получить данные в mX $ ''?

Большое спасибо заранее.

своей внешности, как это, например:

   ticker  date PX_LAST 
    1  SPX Index 2009-01-01   NA 
    2  SPX Index 2009-01-02 931.8000 
    5  SPX Index 2009-01-05 927.4500 
    6  SPX Index 2009-01-06   NA 
    7  SPX Index 2009-01-07 906.6500 
    8  SPX Index 2009-01-08 909.7300 
    9  SPX Index 2009-01-09 890.3500 
…. 
    5128 AAPL Equity 2009-01-01   NA 
    5129 AAPL Equity 2009-01-02 90.7500 
    5132 AAPL Equity 2009-01-05 94.5800 
    5133 AAPL Equity 2009-01-06 93.0200 
    5134 AAPL Equity 2009-01-07 91.0100 
    5135 AAPL Equity 2009-01-08 92.7000 
    5136 AAPL Equity 2009-01-09 90.5800 

тХ $ 'Индекс SPX', например, выглядит следующим образом:

$`SPX Index` 
     ticker  date PX_LAST 
1 SPX Index 2009-01-01  NA 
2 SPX Index 2009-01-02 931.80 
3 SPX Index 2009-01-05 927.45 
4 SPX Index 2009-01-06  NA 
5 SPX Index 2009-01-07 906.65 
6 SPX Index 2009-01-08 909.73 
7 SPX Index 2009-01-09 890.35 
+3

Не зная, что такое 'mY' и' mX', мы предполагаем. – Spacedman

+0

Я не понимаю, почему это поможет, но я включил образец. –

+0

Просьба уточнить ваш вопрос и привести пример. 'concatenate' является двусмысленным. Также убедитесь, что критическая часть вашего вопроса не печатается, как вы ожидали. Возможно, вы просто ищете '[' или '[[' operator. Например, 'ticker <-" GOOG Equity "; х [[тиккер]] '. – flodel

ответ

0

Split создает list, элементы которого являются куски вашего dataframe и имена даются соответствующим значением в столбце, который вы использовали для разделения. Значения наподобие: "" (пустая символьная строка) соответствуют unnamed элементы; и NA удалены.

Пример:

> d <- data.frame(a=c("A",NA,""," "),b=1:4) 
> d 
    a b 
1 A 1 
2 <NA> 2 
3  3 
4  4 
> split(d,d$a) 
[[1]] 
    a b 
3 3 

$` ` 
    a b 
4 4 

$A 
    a b 
1 A 1 

Тем не менее, вы можете попытаться получить доступ, что вы хотите с помощью mX$[[1]].

+0

А, это что-то. Поэтому мне приходится работать с цифрами. Большое спасибо. Поэтому, если я хочу применить функцию, скажите mean(), в столбец PX_LAST в mX, я должен использовать for-loop, который является чем-то вроде mean (mX $ [[i]]), где i - итератор for -loop? –

+0

@JaapPaap, если это все, что вам нужно, нет необходимости сначала разделять данные. Используйте 'aggregate (PX_LAST ~ ticker, data = mY, FUN = mean)'. –

+0

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

Смежные вопросы