我有一个包含以下字段的数据框: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里面的一切似乎都很好。我总是可以将列转换回日期,但这很奇怪 - 一个错误?
答案 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
不在该列表中,因此您只需获取基础整数值。