不能使用大于和替换年份

Cannot use greater than and replace year

我无法将大于的年份替换为导致小于年份的另一个值。请帮我用大于符号替换年份。

代码

library(lubridate)
x <- ymd("2012-03-26")
year(x) > 1995 =2013

RESULT:
Error in year(x) > 1995 = 2001 : could not find function "><-"

预期产出

>x
"2001-03-26"

我们可以利用 base ifelse:

实现预期的输出
  ymd(ifelse(year(x) > 1995, gsub(year(x), "2001",x),x))
[1] "2001-03-26"

对于日期向量:

sapply(ymd(years), function(yr) ifelse(year(yr) > '1995', 
                                      gsub(year(yr), '2001',yr),yr))

数据:

years <- rep(x, 4)

您正在尝试将条件 (year(x) > 1995) 设置为一个值。这只是 TRUE 和 FALSE 值的逻辑向量,在您的示例中它只是 TRUE。

您实际上想将 x 的元素设置为值 x[year(x) > 1995]

year(x[year(x) > 1995] ) <- 2001
x
[1] "2001-03-26"

首先,您的错误是 All formats failed to parse. No formats found,因为那不是日期字符串。这称为日期时间,因为它有 00:00:00。由于 ymd 仅用于日期,因此请使用 ymd_hms

现在,我不确定您在更改年份后是否还需要那些 00:00:00,所以如果是,那么

ifelse(year(ymd_hms(date)) > 1995, format(ymd_hms(date), "2001-%m-%d %H:%M:%S"), date)