Рассчитайте средний платеж между датами только для положительных сумм - PullRequest
1 голос
/ 07 мая 2020

У меня есть фрейм данных, содержащий столбцы даты и платежа. Оба столбца также содержат некоторые значения NA. Вопрос состоит в том, чтобы рассчитать средние платежи с датой между 1 января 2009 г. и 31 декабря 2015 г., учитывать только положительные платежи и исключить значения NA из расчета.

Вот мой код:

average <- mean(df$payment[which(df$payment > 0)] [with(df, df$date >= "2009-01-01" & df$date <= "2015-12-31", na.rm = TRUE)], na.rm = TRUE)

В приведенном выше коде нет ошибки. Это правильно? Или какие-нибудь предложения по поводу лучшей идеи?

Искренне признателен за любую помощь :).

1 Ответ

1 голос
/ 07 мая 2020

Мы можем преобразовать столбец 'date' в класс Date (в случае, если он не преобразован), а затем подмножество 'payment', создав логический вектор с платежом больше 0 и (&) 'date 'значения столбца находятся в диапазоне от' 2009-01-01 'до' 2015-12-31 ', получите mean

df$date <- as.Date(df$date)
with(df,  mean(payment[payment > 0 & 
                       date >= as.Date("2009-01-01") & 
                       date <= as.Date("2015-12-31")], na.rm = TRUE))
...