library(zoo)
library(lubridate)
yearmon <- as.yearmon(c("01-10", "02-15", "03-30"), "%m-%y")
for (i in yearmon) {
if (year(yearmon[i]) > 2020) {
year(yearmon[i]) <- year(yearmon[i]) - 100
}}
Error in if (year(yearmona[i]) > 2020) { :
missing value where TRUE/FALSE needed
想法是采用不正确年份的数据&gt; 2020年,并将它们恢复到19XX形式。
答案 0 :(得分:1)
在这里,我们可以使用ifelse
并且分配部分也不会工作
as.yearmon(paste(format(yearmon, "%b"),
ifelse(year(yearmon) > 2020, year(yearmon)-100, year(yearmon))))
#[1] "Jan 2010" "Feb 2015" "Mar 1930"
答案 1 :(得分:1)
动物园的yearmon
个对象是年份+分数年,所以你从2020年的任何东西中减去100:
> yearmon <- as.yearmon(c("01-10", "02-15", "03-30"), "%m-%y")
> yearmon
[1] "Jan 2010" "Feb 2015" "Mar 2030"
> yearmon[yearmon > 2020] = yearmon[yearmon > 2020] - 100
> yearmon
[1] "Jan 2010" "Feb 2015" "Mar 1930"
这不需要润滑,或任何格式转换等。