尝试在包含Dates的数据帧上使用melt()时出错

时间:2010-05-14 01:29:23

标签: r reshape melt

我想融化dataframe,以便在一列中我有日期,在一秒钟内我将用户名作为变量,最后是值。

我收到了这个错误:

  

as.Date.numeric(value)出错:必须提供'origin'

虽然我理解错误,但我并不确定如何绕过它。

一小部分数据是:

structure(list(created_at = structure(c(14007, 14008, 14009, 
14010, 14011, 14012), class = "Date"), benjamin = c(16, 0, 0, 
0, 0, 0), byron = c(0, 0, 0, 0, 0, 0), cameronc = c(0, 0, 0, 
0, 0, 0), daniel = c(0, 0, 0, 0, 0, 0), djdiaz = c(0, 0, 0, 0, 
0, 0), gene = c(16, 77, 64, 38, 72, 36), joel = c(0, 0, 0, 0, 
0, 2), kerem = c(0, 0, 0, 0, 0, 0), sophia = c(0, 0, 0, 0, 0, 
0), SuperMoonMan = c(0, 0, 0, 0, 0, 0)), .Names = c("created_at", 
"benjamin", "byron", "cameronc", "daniel", "djdiaz", "gene", 
"joel", "kerem", "sophia", "SuperMoonMan"), row.names = c(NA, 
6L), class = c("cast_df", "data.frame"))

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

尝试将created_at变量转换为字符向量。 melt似乎也不喜欢cast_df类,但通过将类重置为data.frame,我获得了成功。像这样:

df <- as.data.frame(df)
df$created_at <- as.character(df$created_at)
library(reshape)
melt(df)

答案 1 :(得分:3)

您的错误是由rbind中使用的melt引起的,这是错误数据融化的结果。我不知道您如何创建cast_df data.frame,但缺少idvars所需的属性(rdimnamesmelt.cast_df)。

这就是为什么wkmor1解决方案有效,melt.data.frame不需要这个参数。如果不将Date转换为character,则可以将其完成为:

df <- as.data.frame(df)
melt(df, id="created_at")