代码之家  ›  专栏  ›  技术社区  ›  Dan

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

  •  3
  • Dan  · 技术社区  · 15 年前

    我想融化 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 回复  |  直到 7 年前
        1
  •  4
  •   Ronak Shah    10 年前

    尝试转换 created_at 变量转换为字符向量。 melt 似乎也不喜欢 cast_df 但是我成功了,因为我把班级重新设置为 data.frame . 像这样:

    df <- as.data.frame(df)
    df$created_at <- as.character(df$created_at)
    library(reshape)
    melt(df)
    
        2
  •  3
  •   Community Mohan Dere    8 年前

    你的错误是由 rbind 用于 melt 这是错误数据熔化的结果。我不知道你是怎么创造的 cast_df data.frame ,但它缺少属性( idvars rdimnames )这是 melt.cast_df .

    这就是为什么 wkmor1 解决方案, melt.data.frame 不需要这些论据。而且不转换 Date character 可以这样做:

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