У меня 3/4 ответа на вопрос, но мне нужна помощь в заключительной части.У меня есть некоторые данные для EBIT компаний.Если показатель EBIT отрицательный, я хотел бы заменить значение средним значением предыдущего года и текущего года, например, если компания зафиксировала отрицательный показатель EBIT в 1993 году, я хотел бы получить среднее значение отрицательного года (1993) ипредыдущий год (1992).
У меня есть следующий код (который я нашел в Stackoverflow Как заменить NA средним значением подмножеством в R (вменять с помощью plyr?) ), но я бы хотелхотел бы изменить функцию impute.mean, чтобы отразить изменения, которые я хочу.То есть я действительно не хочу преобразовывать отрицательные числа в NA
years <- c(1990, 1991, 1992, 1993, 1994)
gvkey <- c(1000, 1100, 1200, 1300, 1400, 1500)
join <- as.data.frame(rep_len(years, length.out = length(gvkey) *
length(years)))
join$gvkey <- rep(gvkey, length(years))
join$ebit <- runif(nrow(join), min=-100, max=100)
join$ebit[join$ebit < 0] <- NA ## very inefficient way of recognizing negative values
colnames(join) <- c("year", "gvkey", "ebit")
impute.mean <- function(x) replace(x, is.na(x), mean(x, na.rm = TRUE))
join <- join %>%
group_by(gvkey) %>%
mutate(
ebit = impute.mean(ebit))
Я также нашел это, что идеально, за исключением вопроса NA R, заменяющего пропущенные значения средним значением окружения
x <- (na.locf(join) + rev(na.locf(rev(join))))/2