Я хотел бы написать код, который функционирует подобно функции AVERAGEIFS в Excel.По сути, я хотел бы взять среднее значение переменной при соблюдении определенных условий.Мне не удалось найти аналогичную проблему в Интернете, поскольку в моей ситуации требуется уникальное условие, исключающее определенные случаи.
Я пытаюсь рассчитать средний доход (TOTALREV) для каждого идентификатора судна.(VESSEL_ID) во все годы опроса (SURVEY_YEAR) - исключая текущий год опроса.Я попытался создать дополнительный столбец с именем YEAR, чтобы создать условное «не равное», а также то, что отображает мой код в настоящее время.
CPTWG <- CEEDCdatEXP[,c("VESSEL_ID","SURVEY_YEAR","TOTALREV")] %>%
group_by(VESSEL_ID) %>%
summarize(AVERAGEREV = mean(TOTALREV[SURVEY_YEAR != SURVEY_YEAR]))
Этот код должен создать мой идеальный результат:
VESSEL_ID <- c(1,2,3,1,2,3,1,2,3)
SURVEY_YEAR <- c(2009,2009,2009,2010,2010,2010,2011,2011,2011)
TOTALREV <- c(2718,9939,4014,7019,2016,2025,3218,7727,7252)
AVERAGEREV <- c(5118.5,4871.5,4638.5,2968,8833,5633,4868.5,5977.5,3019.5)
mydata <- data.frame(VESSEL_ID,SURVEY_YEAR,TOTALREV,AVERAGEREV)