2012-06-01 2 views
1

Мне было интересно, если бы был способ «перекрестного продукта» кадров данных с нечисловыми вводами. У меня есть одностолбцовый фрейм данных df.RICS со строками в виде записей (длина 235) и другой df.dates с датами в виде записей (длина 3004). Я хочу, чтобы фрейм данных с каждой датой совпадала с каждой строкой в ​​df.RICS:«кросс-продукт» данных фреймов

dates 
1 2004-04-23 
2 2004-04-24 
3 2004-04-25 
4 2004-04-26 
5 2004-04-27 
6 2004-04-28 
7 2004-04-29 
8 2004-04-30 
9 2004-05-01 
10 2004-05-02 

    RICS 
1 AA.N 
2 AAP 
3 AAP.N 
4 AAPL.O 
5 ABGL.L 

Могу ли я использовать expand.grid (df.RICS, df.dates) без преобразования числовых значений?

Сейчас все у меня есть:

> expand.grid(datesAsVec, RICSAsVec, stringsAsFactors = TRUE) 
     Var1 Var2 
1 2004-04-23 AA.N 
Warning message: 
In format.data.frame(x, digits = digits, na.encode = FALSE) : 
    corrupt data frame: columns will be truncated or padded with NAs 
+0

Какое «совпадение» вы имеете в виду? То есть какова была бы функция для использования с «внешним»? – cbeleites

+0

ваши векторы имеют NA в них, что может быть, однако, вы сделали dataframes в векторы. Если это так, просто извлеките столбцы в своем вызове expand.grid или, если в данных кадры есть NA в них, сверните их ссылки в na.omit –

ответ

1
  1. Если операция работает с символьными данными, вы можете преобразовать data.frames для матриц символов, outer работает над этим.

    > df <- data.frame (a = LETTERS [1:3], b = 4:6, c = Sys.Date()) 
    > df 
        a b   c 
    1 A 4 2012-06-01 
    2 B 5 2012-06-01 
    3 C 6 2012-06-01 
    > sapply (df, as.character) 
        a b c   
    [1,] "A" "4" "2012-06-01" 
    [2,] "B" "5" "2012-06-01" 
    [3,] "C" "6" "2012-06-01" 
    > class (sapply (df, as.character)) 
    [1] "matrix" 
    
  2. Если функция векторизации, nstead использования outer вы также можете повторить два matices надлежащим образом и непосредственно использовать функцию.

  3. Если функция не работает на персонаже, это будет сложнее ... Но вы можете взглянуть на POSIXct.

+0

Думайте, что expand.grid можно использовать с матрицами символов после игры с ними немного; благодаря! – user1428668

2

вы ищете expand.grid

+1

Или, возможно, «слить». – joran

+1

expand.grid работает, но преобразует все записи в числовые. Есть ли способ получить записи в форме ..... Var1 Var2 1 2004-04-23 AA.N ........ чтобы я мог хранить даты и как они? – user1428668

+1

@ user1428668 Я думаю, вы должны предоставить нам примерные данные ... Если мы знаем, какой формат у вас есть, мы можем помочь вам! Посмотрите на 'dput', как вы можете легко предоставить некоторые свои данные здесь. –

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