【问题标题】:I am getting an error when trying to use melt() on a dataframe containing Dates尝试在包含日期的数据帧上使用 melt() 时出现错误
【发布时间】:2011-02-19 08:28:55
【问题描述】:

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

我收到此错误:

as.Date.numeric(value) 中的错误:必须提供“原点”

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

数据的一个小样本是:

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"))

感谢您的帮助。

【问题讨论】:

    标签: r reshape melt


    【解决方案1】:

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

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

    【讨论】:

    • 我给 wkmor1 打勾是因为他首先得到它并且确实解决了问题。这表示 Marek 非常感谢您帮助我更好地了解正在发生的事情。
    【解决方案2】:

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

    这就是wkmor1 解决方案有效的原因,melt.data.frame 不需要这个参数。并且无需将Date 转换为character 即可:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 2021-12-21
      • 2022-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多