У меня есть следующий dataframe называется «погода», что я пытаюсь нормализовать:NA после нормализации в R
'data.frame': 4745 obs. of 9 variables:
$ TimeofDay : int 700 800 900 1000 1100 1200 1300 1400 1500 1600 ...
$ AirTemp : num 16.4 17.7 19.3 19.8 21.3 ...
$ Humidity : num 76.3 68.5 57.4 53.6 49.2 ...
$ Dewpoint : num 12.2 11.8 10.7 10.2 10.2 ...
$ BarPres : num 101 101 101 101 101 ...
$ MaxWindSpeed : num 4.45 5.25 5.25 6.85 5.25 ...
$ Zenith : num 99 88.4 81.7 72.2 64.5 59.2 57.1 58.4 63 70.3 ...
$ Azimuth : num -99 119 125 135 148 ...
$ TotalSolarRad: int 0 2 77 116 76 93 138 125 138 82 ...
Я использую стандартную функцию нормализации следующим образом:
normalize <- function(x) {
return ((x - min(x))/(max(x) - min(x)))
}
и применение это так:
weatherNorm <- as.data.frame(lapply(weather, normalize))
после нормализации новый dataframe состоит из множества значений NA, подобных этим :
'data.frame': 4745 obs. of 9 variables:
$ TimeofDay : num NA NA NA NA NA NA NA NA NA NA ...
$ AirTemp : num NA NA NA NA NA NA NA NA NA NA ...
$ Humidity : num NA NA NA NA NA NA NA NA NA NA ...
$ Dewpoint : num NA NA NA NA NA NA NA NA NA NA ...
$ BarPres : num NA NA NA NA NA NA NA NA NA NA ...
$ MaxWindSpeed : num NA NA NA NA NA NA NA NA NA NA ...
$ Zenith : num 1 0.879 0.803 0.695 0.607 ...
$ Azimuth : num 0 0.562 0.577 0.604 0.635 ...
$ TotalSolarRad: num 0 0.00199 0.07669 0.11554 0.0757 ...
Есть ли причина, по которой функция изменит значения на NA? Эта функция работает по мере необходимости на других фреймах данных.
См. '? Max'. Вы хотите 'na.rm'. – MichaelChirico
Опубликовать воспроизводимый пример вместо 'str' – Sotos
Также я бы сделал:' r <- range (x, na.rm = TRUE); return ((x - r [1])/diff (r)) '- вы вычисляете' min' дважды – MichaelChirico