Обратите внимание: это упрощенное объяснение того, откуда берутся «данные», но откуда эти данные не имеют отношения к вопросу кодирования.Как я могу заполнить значения NA на основе следующего действительного значения, но разделите это значение между предыдущими НС?
У меня есть набор данных, созданный путем сбора воды в трубке каждый день. Я не могу ходить и измерять трубку каждый день (но трубка продолжает заполнять), поэтому в записях воды есть пробелы. Этот набор фиктивных данных показывает, где это произошло в дни 5 и 10, потому что это фиктивный набор данных. Я сделал предположение, что каждый день в трубу поступает 500 мл воды (реальный набор данных - это много беспорядок!)
фиктивные данные
day<-c(1,2,3,4,5,6,7,8,9,10,11,12)
value<-c(500,500,500,500,NA,1000,NA,NA,NA,2000,500,500)
df<-data.frame(day,value)
объяснение данных: Я собираемые каждый день в течение нескольких дней 1: 4, так что значение на каждый день 500 мл, пропущенный день 5, так что значение НС, собранный на 6-й день, так что значение 1000 мл (вода с 5-го дня и 6-го дня вместе взятых) пропустили 7,8,9, поэтому значения равны NA, собранные на 10-й день, чтобы дать значение 2000 мл за 4 дня), затем собираются каждый день за последние два)
Я хотел бы заполнить пробелы NA, взяв значение следующего «реального» измерения и разделив это значение между днем NA и этим значением. Да, я предполагаю, что если я не сделал измерения, постоянный процесс и что я могу разделить последнее измерение поровну между днями.
это то, что выходные данные должны выглядеть
day<-c(1,2,3,4,5,6,7,8,9,10,11,12)
corrected.value<-c(500,500,500,500,500,500,500,500,500,500,500,500)
corrected.df<-data.frame(day,corrected.value)
Опять же, это лишь фиктивные данные, установленные в противном случае самый простой способ будет просто заменить NA с 500 с «value[is.na(value)] <- 500
», но в наборе реальных данных значения могут быть 457,6, 779, 376 и т. д. Также попытался сделать цикл, но продолжать застревать ... Любые идеи о том, как я могу это сделать?
Помощь высоко ценится