不能使用大于和替换年份
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)
我无法将大于的年份替换为导致小于年份的另一个值。请帮我用大于符号替换年份。
代码
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)