数据框的“交叉产品”

时间:2012-06-01 15:05:41

标签: r

我想知道是否有办法采用非数字条目的数据框“交叉产品”。我有一个单列数据框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

2 个答案:

答案 0 :(得分:2)

您正在寻找expand.grid

答案 1 :(得分: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. 如果函数是矢量化的,不管使用outer,您还可以适当地重复这两个事项并直接使用该函数。

  3. 如果该功能对角色不起作用,则会更复杂......但你可以查看POSIXct