R:错误:无效' y'输入' x || ý'

时间:2016-02-23 15:16:15

标签: r date

我尝试创建一个包含季节的向量,不同向量的日期,即在向量'日期'有" 2012-06-06",我想在矢量' jahreszeiten'夏天"夏天"当我这样尝试时(不知怎的,我的Rstudio给了我德语月名,尽管它的用户界面是英语):

jahreszeit <- rep(NA, length(dates))
if(months(dates[i]) == "September" || "Oktober" || "November"){
  jahreszeit[i] <- "Herbst"
}

我收到错误

Error in months(dates[i]) == "September" || "Oktober" : 
  invalid 'y' type in 'x || y'

(R想用这条消息告诉我什么?)

,而

if (months(dates[i]) == "Juni" || "Juli" || "August"){
  jahreszeit[i] <- "Sommer"
}

给我没有错误,并且工作正常。我试图解决这个问题:

monate <- levels(as.factor(months(dates)))
if (as.factor(months(dates[i])) == monate[9] || monate[1] || monate[8]){
  jahreszeit[i] <- "Frühling"
}

但它仍然没有帮助

Error in as.factor(months(dates[i])) == monate[9] || monate[1] : 
      invalid 'y' type in 'x || y').

感谢您的努力,

的Matthias

  

为了执行示例,请使用:

dates <- c("2012-06-05", "2012-06-05", "2012-06-05", "2012-06-05", "2012-06-05", 
"2012-06-05", "2012-06-05", "2012-06-06", "2012-06-06", "2012-06-06", 
"2012-06-06", "2012-06-06", "2012-06-06", "2012-06-06", "2012-06-06", 
"2012-06-05", "2012-06-05", "2013-04-18", "2013-04-18", "2013-04-18", 
"2013-04-18", "2013-04-18", "2013-04-18", "2013-04-18", "2013-04-18", 
"2013-04-18", "2013-04-18", "2013-04-18", "2013-04-18", "2013-04-18", 
"2013-04-18", "2013-04-18", "2013-04-25", "2013-04-25", "2013-04-25", 
"2013-04-25", "2013-04-25", "2013-04-25", "2013-04-25", "2013-04-25", 
"2013-04-25", "2013-04-25", "2013-04-25", "2013-04-25", "2013-04-25", 
"2013-04-25", "2013-04-26", "2013-04-26", "2013-04-26", "2013-04-26", 
"2013-04-26", "2013-04-26", "2013-04-26", "2013-04-26", "2013-04-26", 
"2013-04-26", "2013-05-07", "2013-05-07", "2013-05-07", "2013-05-07", 
"2013-05-07", "2013-05-07", "2013-05-07", "2013-05-07", "2013-05-07", 
"2013-05-07", "2013-05-07", "2013-05-07", "2013-05-07", "2013-05-07", 
"2013-05-07", "2013-05-07", "2013-05-07", "2013-05-07", "2013-05-07", 
"2013-06-19", "2013-06-19", "2013-06-26", "2013-06-26", "2013-06-26", 
"2013-06-26", "2013-06-26", "2013-06-27", "2013-06-27", "2013-06-27", 
"2013-06-27", "2013-07-04", "2013-07-04", "2013-07-04", "2013-07-04", 
"2013-07-04", "2013-07-04", "2013-07-04", "2013-07-04", "2013-07-04", 
"2013-07-04", "2013-07-04", "2013-07-04", "2013-07-04", "2013-07-04", 
"2013-07-04", "2013-07-04", "2013-07-11", "2013-07-11", "2013-07-11", 
"2013-07-11", "2013-07-11", "2013-07-11", "2013-07-11", "2013-07-11", 
"2013-07-11", "2013-07-11", "2013-07-11", "2013-07-11", "2013-07-11", 
"2013-07-11", "2013-07-16", "2013-07-16", "2013-07-16", "2013-07-16", 
"2013-07-16", "2013-07-16", "2013-07-16", "2013-07-16", "2013-07-16", 
"2013-07-16", "2013-07-16", "2013-07-16", "2013-07-16", "2013-07-16", 
"2013-07-16", "2013-07-16", "2013-07-16", "2013-07-16", "2013-07-16", 
"2013-07-16", "2013-07-16", "2013-07-16", "2013-07-16", "2013-07-16", 
"2013-07-16", "2013-07-16", "2013-07-10", "2013-07-10", "2013-07-10", 
"2013-07-25", "2013-07-25", "2013-07-25", "2013-07-25", "2013-07-25", 
"2013-07-31", "2013-07-31", "2013-07-31", "2013-07-31", "2013-07-31", 
"2013-07-31", "2013-07-31", "2013-07-31", "2013-08-01", "2013-08-01", 
"2013-08-01", "2013-08-01", "2013-08-01", "2013-08-01", "2013-08-14", 
"2013-08-14", "2013-08-14", "2013-08-14", "2013-08-14", "2013-08-14", 
"2013-08-14", "2013-08-14", "2013-08-28", "2013-08-28", "2013-08-28", 
"2013-08-28", "2013-08-28", "2013-08-28", "2013-08-28", "2013-08-28", 
"2013-09-11", "2013-09-11", "2013-09-11", "2013-09-11", "2013-09-11", 
"2013-09-11", "2013-09-11", "2013-09-11", "2013-09-26", "2013-09-26", 
"2013-09-26", "2013-09-26", "2013-09-26", "2013-09-26", "2013-09-26", 
"2013-09-26", "2013-10-09", "2013-10-09", "2013-10-09", "2013-10-09", 
"2013-10-09", "2013-10-09", "2013-10-09", "2013-10-09", "2013-10-23", 
"2013-10-23", "2013-10-23", "2013-10-23", "2013-10-23", "2013-10-23", 
"2013-10-23", "2013-10-23", "2013-10-01", "2013-10-01", "2013-10-01", 
"2013-10-01", "2013-10-01", "2013-10-09", "2013-10-09", "2013-10-09", 
"2013-11-06", "2013-11-06", "2013-11-06", "2013-11-06", "2013-11-06", 
"2013-11-06", "2013-11-06", "2013-11-06", "2013-11-19", "2013-11-19", 
"2013-11-19", "2013-11-19", "2013-11-19", "2013-11-19", "2013-11-19", 
"2013-11-19", "2013-11-19", "2013-11-19", "2013-11-19", "2013-11-19", 
"2013-11-05", "2013-11-05", "2013-11-05", "2013-11-05", "2013-11-05", 
"2013-11-05", "2013-11-05", "2013-11-05", "2013-11-26", "2013-11-26", 
"2013-11-26", "2013-11-26", "2013-11-26", "2013-12-03", "2013-12-03", 
"2013-12-04", "2013-12-04", "2013-12-04", "2013-12-04", "2013-12-04", 
"2013-12-04", "2013-12-04", "2013-12-04", "2013-12-18", "2013-12-18", 
"2014-02-12", "2014-02-12", "2014-03-10", "2014-03-10", "2014-04-07", 
"2014-04-07", "2014-04-07", "2014-04-07", "2014-04-07", "2014-04-07", 
"2014-04-07", "2014-04-08", "2014-04-08", "2014-04-08", "2014-04-08", 
"2014-04-08", "2014-04-10", "2014-04-10", "2014-04-10", "2014-04-14", 
"2014-04-14", "2014-04-14", "2014-04-14", "2014-04-14", "2014-04-14", 
"2014-04-14", "2014-04-14", "2014-04-14", "2014-04-14", "2014-04-14", 
"2014-04-15", "2014-04-15", "2014-04-15", "2014-04-15", "2014-04-15", 
"2014-04-24", "2014-04-24", "2014-05-14", "2014-05-14", "2014-05-26", 
"2014-05-26", "2014-06-11", "2014-06-11", "2014-06-11", "2014-06-11", 
"2014-06-11", "2014-06-11", "2014-06-11", "2014-06-11", "2014-06-26", 
"2014-06-26", "2014-06-26", "2014-06-26", "2014-06-26", "2014-06-26", 
"2014-07-09", "2014-07-09", "2014-07-09", "2014-07-15", "2014-07-15", 
"2014-07-15", "2014-07-15", "2014-07-15", "2014-07-15", "2014-07-21", 
"2014-07-21", "2014-07-21", "2014-07-22", "2014-07-22", "2014-07-22", 
"2014-07-22", "2014-07-22", "2014-07-22", "2014-08-05", "2014-12-16", 
"2014-12-16", "2014-12-16", "2014-12-16", "2014-12-16", "2014-12-16", 
"2014-12-16", "2014-12-16", "2014-12-16", "2014-12-16", "2014-12-16", 
"2014-12-16", "2014-12-16", "2015-05-05", "2015-05-05", "2015-05-07", 
"2015-05-07", "2015-05-07", "2015-05-07", "2015-05-07", "2015-05-07", 
"2015-05-07", "2015-05-07", "2015-05-07", "2015-05-11", "2015-05-11", 
"2015-05-11", "2015-05-11", "2015-05-11", "2015-05-11", "2015-05-11", 
"2015-05-11", "2015-05-12", "2015-05-12", "2015-05-12", "2015-05-12", 
"2015-05-12", "2015-05-12", "2015-05-12", "2015-05-12", "2015-05-18", 
"2015-05-18", "2015-05-18", "2015-05-18", "2015-05-18", "2015-05-18", 
"2015-05-19", "2015-05-19", "2015-05-19", "2015-05-19", "2015-05-19", 
"2015-05-19", "2015-05-21", "2015-05-21", "2015-05-21", "2015-05-21", 
"2015-05-21", "2015-05-21", "2015-07-15", "2015-07-15", "2015-07-20", 
"2015-07-20", "2015-07-20", "2015-07-21", "2015-07-21", "2015-07-21", 
"2015-07-21", "2015-07-21", "2015-07-21", "2015-07-21", "2015-07-22", 
"2015-07-23", "2015-08-04", "2015-08-04", "2015-08-04", "2015-08-06", 
"2015-08-06", "2015-08-06", "2015-08-06", "2015-08-06", "2015-08-06", 
"2015-08-06", "2015-08-06", "2015-08-06", "2015-08-11", "2015-08-11", 
"2015-08-11", "2015-08-11", "2015-08-11", "2015-08-12", "2015-09-29", 
"2015-09-29", "2015-09-29", "2015-09-29", "2015-09-29", "2015-09-29", 
"2015-09-29", "2015-09-29", "2015-09-29", "2015-09-29", "2015-10-12", 
"2015-10-12", "2015-10-12", "2015-10-12", "2015-11-16", "2015-11-16", 
"2015-11-16", "2015-11-16", "2015-11-16", "2015-11-16", "2015-12-15", 
"2015-12-15", "2015-12-15", "2016-01-28", "2016-01-28", "2016-01-28", 
"2016-01-28", "2016-01-28", "2016-02-03", "2016-02-03", "2016-02-03", 
"2016-02-03", "2016-02-03", "2016-02-03", "2016-02-03", "2016-02-03", 
"2016-02-03")

1 个答案:

答案 0 :(得分:0)

您要做的是以下内容:

# create a character vector
jahreszeit <- character(length(dates))

id.fruhling <- months(dates) %in% c("mar", "apr", "may")
jahreszeit[id.fruhling] <- "fruhling"

等...

请再看一下关于R的好教程。从您的代码中可以清楚地看出,您没有意识到如何编写代码,因此它适用于完整的向量。

PS:请注意我使用了几个月的随机缩写。根据您运行该代码的机器(及其语言设置),这些月份将有所不同。更好的方法是使用as.POSIXlt,因此您可以使用月份编号而不是依赖于语言的名称。

这样的事情就是我要解决的问题:

dates <- c("2012-06-05",
           "2013-09-12",
           "2014-01-05",
           "2009-04-12")
# find number of the month
month.nr <- as.POSIXlt(dates)$mon + 1
# create a lookup table
jzeiten <- c(rep('winter',2),
             rep(c('fruhling','summer','herbst'), each = 3),
             'winter')
# use vectorization and indices
jahreszeiten <- jzeiten[month.nr]

# profit
jahreszeiten