【问题标题】:How to transform data in Column Date using cut function in R如何使用 R 中的剪切函数转换列日期中的数据
【发布时间】:2020-02-16 03:27:42
【问题描述】:

我的数据集中有一个发布日期列,需要添加一个列十年,它应该有“1980 年代”、“1990 年代”、“2000 年代”、“2010 年代”四个级别。

1980 年代 1980 年 1 月 1 日至 1989 年 12 月 31 日

1990 年 1 月 1 日至 1999 年 12 月 31 日之间的 1990 年代 等等

发布日期列示例

到目前为止,这是我的代码:

df$Decade <- cut(df$Release, c(1970,1980,1990,2000))
levels(df$Decade) <- c("1980s", "1990s", "2000s", "2010s")

这是我得到的错误:

cut.Date(df$Release, 10 + c(1970, 1980, 1990, 2000)) 中的错误: 'breaks' 的无效规范

任何帮助将不胜感激。

【问题讨论】:

标签: r


【解决方案1】:

对于"Date" 对象,您不能那样剪切。我确定有一个 R 基础版本,但是如果您不太关心如何或不想从头开始学习做事,lubridate 可以让您的生活更轻松.

library(lubridate)

Decade <- format(floor_date(Release, years(x=10)), "%Y")

【讨论】:

    【解决方案2】:

    一种方法是将Release 转换为日期,仅提取年份的前 3 个字符。所以 199 代表 1991 年或 198 年代表 1987 年,然后添加 "0s" 以获得十年。

    df <- data.frame(Release = c('5/21/1980', '12/12/1980', '5/12/1991'))
    df$Decade <- paste0(substring(as.Date(x, '%m/%d/%Y'), 1, 3), "0s")
    df
    #     Release Decade
    #1  5/21/1980  1980s
    #2 12/12/1980  1980s
    #3  5/12/1991  1990s
    

    【讨论】:

    • OP 说Release 已经是约会对象了。但我喜欢在十年中添加“s”。 ;)
    • @Edward 看截图中日期的格式,我不这么认为。
    • @罗纳克。看起来像 Excel 中的屏幕截图。所以它可能是。 :P
    • 而且,OP 的错误信息说Error in cut.Date(...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多