我尝试创建一个包含季节的向量,不同向量的日期,即在向量'日期'有" 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")
答案 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