投射日期矩阵?

时间:2012-02-02 16:59:17

标签: r reshape

我有一个包含以下字段的数据框:a,b,c。 a和b是标识符,c是日期。并非所有标识符组合都有日期。数据中有一些重复的(a,b)。我只需要最后一个c。

我想创建一个表,其中行的形式级别和b的级别构成列。如果存在与a和b的水平匹配的c,则它应该在相应的单元格中结束(t [a,b] = c)。 (我想用表格将事件聚类为距离矩阵的基础。)

我尝试了以下操作:

f <- function(x) {
  if (length(x) > 0) {
    return(x[length(x)])
  }
  else {
    return(NA)
  }
}

m.df <- melt(df)
c.df <- cast(m.df, a ~ b, fun.aggregate = f)

这是好的,但是以某种方式将日期变成整数(14746和诸如此类)。为什么会这样? f里面的一切似乎都很好。我总是可以将列转换回日期,但这很奇怪 - 一个错误?

1 个答案:

答案 0 :(得分:1)

看看?matrix。特别是详细信息部分中的这一段:

 ‘as.matrix’ is a generic function.  The method for data frames
 will return a character matrix if there is any
 non-(numeric/logical/complex) column, applying ‘format’ to
 non-character columns.  Otherwise, the usual coercion hierarchy
 (logical < integer < double < complex) will be used, e.g.,
 all-logical data frames will be coerced to a logical matrix, mixed
 logical-integer will give a integer matrix, etc.

Date不在该列表中,因此您只需获取基础整数值。