Я имею данные, как это:R: Возможна ближайшая соседка для не-NA?
v1 = c(-1, 1, 420, 400, 400, 170, 420)
v2 = c(350, 460, 420, 400, 500, 170, 420)
v3 = c(350, 460, 420, 1, 500, 3, 1)
v4 = c(1, NA, 420, 1, NA, 170, 420)
v5 = c(350, 400, 400, 1, 1, 3, 300)
v6 = c(350, 400, NA, 500, 500, 170, 300)
v7 = c(7,400,200,7,500,170,7)
DF1= data.frame(v1, v2, v3, v4, v5, v6, v7)
В результате в таблице/DF следующим образом:
v1 v2 v3 v4 v5 v6 v7
1 -1 350 350 1 350 350 7
2 1 460 460 NA 400 400 400
3 420 420 420 420 400 NA 200
4 400 400 1 1 1 500 7
5 400 500 500 NA 1 500 500
6 170 170 3 170 3 170 170
7 420 420 1 420 300 300 7
3-значного числа рабочих часов (400 = 40h) и один цифры являются состояниями занятости. Проблема с данными заключается в том, что я нацелен на ежемесячную информацию (v1-v7 - месяцы), но у меня есть рабочее время, проведенное только один раз в год. Поэтому я надел это на штаты, и теперь у меня есть такие же пробелы, которые нужно заполнить.
Я хотел бы заменить состояния «-1», «NA», «1» и «3» на ближайшего соседа (без вычисления, просто замена следующего значения выше «50»), отдавая приоритет значение слева/переменная слева от случая, которая должна быть заменена.
В конце концов, это должно выглядеть:
v1 v2 v3 v4 v5 v6 v7
1 350 350 350 350 350 350 7
2 460 460 460 460 400 400 400
3 420 420 420 420 400 NA 200
4 400 400 400 400 500 500 7
5 400 500 500 500 500 500 500
6 170 170 170 170 170 170 170
7 420 420 420 420 300 300 7
Примечание линии 4, где 2 «1», где заменено значением слева и и один со следующим значением выше 50 справа - вот что я имел в виду с «приоритетом слева».
До сих пор у меня только был опыт со случайным прикосновением пакета-примаза, и я видел пакет knn, но, насколько мне известно, он работает только с NA, не так ли?
Я благодарен за любой намек, потому что экспортировать его в формате CSV и решить его вручную бы меня 10+ часов (11 наборов данных с 100-200 строк каждая)
Заранее спасибо!
Почему в вашем результате (строка 3) есть 'NA'? – jlhoward
DF1 ["3", "v6"] должно быть 400? – Emer
Кроме того, строка 4 не соответствует вашим правилам. – jlhoward