У меня следующая проблема. У меня есть два вектора с символами (c.vec), один с датами (d.vec). Я хочу вычислить определенный интервал времени, если вектор символа имеет определенный атрибут. Поскольку оператор if должен проверять каждую строку, я прочитал, что мне нужно использовать вложенные операторы ifelse (как и для определенных месяцев в векторе дат, для вычисления временного интервала должна использоваться конкретная дата). Мое утверждение ifelse должно рассчитываться следующим образом:
1) Если c.vec == 'Tree' и месяц d.vec после октября - тогда вычислите 15.07.YearAfterd.vec - дату d.vec и перезапишите другой вектор с именем d.diff (этот вектор в нем уже хранятся числовые значения) с результатом
2) Если c.vec == 'Tree' и месяц d.vec после мая - рассчитайте 15.02.YearAfterd.vec - дату d.vec и перезапишите d.diff с результатом
3) Если c.vec == «Дерево» и месяц d.vec до мая - вычислите 15.07.YearOfd.vec- дату d.vec и перезапишите d.diff с результатом
4) Если c.vec =! Затем «дерево» просто используйте значение, уже сохраненное в d.diff, и ничего не перезаписывайте
Вот что я пробовал (однако он просто возвращает NA) - с примером:
c.vec <- c('tree','tree','tree','flower','flower')
d.diff <- c(150,80,97,52,74)
d.vec <- as.Date(c('2016-11-24','2017-06-14','2016-02-21','2017-05-07','2016-04-18'))
d.diff <- ifelse(c.vec=='tree',
# Check if date is after October. The as.Date() part should return 15.07. of the year after d.vec
ifelse(month(d.vec)>10,d.diff <- as.numeric(as.Date(
capture.output(cat(year(d.vec)+1,'-07-15')),'%Y -%m-%d')-d.vec),
# Check if date is after May
ifelse(month(d.vec)>5,d.diff <- as.numeric(as.Date(
capture.output(cat(year(d.vec)+1,'-02-15')),'%Y -%m-%d')-d.vec),
# Else, use 15.07. of the year of d.vec to calculate the time difference
d.diff <- as.Date(capture.output(cat(year(d.vec),'-07-15')),'%Y -%m-%d')-d.vec)),
# if c.vec =! tree just use the existing values in d.diff
d.diff <- d.diff)
Как мне настроить его так, чтобы я получал конкретные временные различия в векторе d.diff?
Я также попытался использовать сохранение векторов во фрейме данных, а затем использовать df.name $ ..., чтобы использовать записи векторов, но он также просто возвращает NA. Спасибо за помощь!