将 if 子句与 yearmon 数据一起使用时出错
Error using if clause with yearmon data
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
我们的想法是获取不正确年份 > 2020 的数据,并将它们恢复为 19XX 格式。
在这里,我们可以使用一个 ifelse
并且赋值部分将不起作用
as.yearmon(paste(format(yearmon, "%b"),
ifelse(year(yearmon) > 2020, year(yearmon)-100, year(yearmon))))
#[1] "Jan 2010" "Feb 2015" "Mar 1930"
Zoo 的 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"
这不需要 lubridate 或任何格式转换等。
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
我们的想法是获取不正确年份 > 2020 的数据,并将它们恢复为 19XX 格式。
在这里,我们可以使用一个 ifelse
并且赋值部分将不起作用
as.yearmon(paste(format(yearmon, "%b"),
ifelse(year(yearmon) > 2020, year(yearmon)-100, year(yearmon))))
#[1] "Jan 2010" "Feb 2015" "Mar 1930"
Zoo 的 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"
这不需要 lubridate 或任何格式转换等。