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

当r涉及bc和ad时,如何计算r中的日期差

  •  1
  • santoku  · 技术社区  · 7 年前

    我有一个这样的数据框:

    df = data.frame(dt = c('0101-01-01','0023-10-20'), comment = c('BC','AD'))
    

    根据评论,第二个死亡时间实际上是23岁。

    我怎样才能让R认出第一个日期是BC,并从这两个日期得到时间差?

    1 回复  |  直到 7 年前
        1
  •  1
  •   akrun    7 年前

    我们转换为 numeric 更改为后 yearmon 同学们,把标志改成 - 对于那些在“评论”中有“BC”的人

    library(zoo)
    v2 <- as.numeric(as.yearmon(df$dt))
    

    如果我们想让“年”更接近

    v2 <- lubridate::year(df$dt) + 
                       (strptime(df$dt, format = "%Y-%m-%d")$yday + 1)/365
    
    i1 <- df$comment == "BC"
    v2[i1] <- -1* v2[i1]
    diff(v2)
    #[1] 124.75