Factor nitelikteki kolonları numeric nitelikli sütun/kolonlara dönüştürmek (R & RStudio)
Çoğu zaman acelemiz vardır ve elimizdeki işleri hemen bitirmek isteriz fakat işler istediğimzi gibi gitmez. Mevcut verilerimiz sadece numeric/sayısal kolonlardan oluşmasına rağmen, basit bir şekilde okunması gereken veriler, okunmaz.
Sayısal yükseklik haritası(DEM) oluşturmak için kullanacağım bir verisetini hiç bir suretle ArcGIS, QGIS, GRASS GIS ve R programlarına okumamaktadır. Üç kolondan sonuncusunu her daim factor, olarak okur ya da hiç bir şekilde listelemez.
Elimdeki verilerinde 113000 civarı satırdan ve 3 sütundan oluşuyor. Ayrıca aralarda belirli boşluklar dikkat çekmiyor değil. Bu boşluklar için bir "for" döngüsü yazmaktansa dosyayı yüklerken kullanacağımız bir kaç komut yardımıyla bu işin üstesinden gelebiliriz.
Programlama bilginiz başlangıç seviyesinde ise bu tür sorunlardan kurtulmak için aşağıdaki yol izlenilebilir.
Bu tip problemleri çözmek için izlenmesi gereken adımlar :
dem_veriseti <- read.csv("xyz_LatLong_pozitif.csv", header = T, stringsAsFactors = FALSE) # verisetindeki ondalık işaret ayıracı "." (nokta) olarak olduğundan read.csv str(dem_veriseti) # data yapısı kontrolu 'data.frame': 113555 obs. of 3 variables: $ X : num 40.5 40.5 40.5 40.5 40.5 ... $ Y : num 28.7 28.7 28.7 28.7 28.7 ... $ Depth: chr "67.308" "67.966" "68.065" "68.068" dem_veriseti$Depth <- as.numeric(dem_veriseti$Depth) Warning message: NAs introduced by coercion na.omit(dem_veriseti$Depth) #NA degerlerini veriden cikarir dem_veriseti$Depth <- as.numeric(dem_veriseti$Depth) #Depth kolonunu numeric yapar str(dem_veriseti) # data yapısı kontrolu 'data.frame': 113555 obs. of 3 variables: $ X : num 40.5 40.5 40.5 40.5 40.5 ... $ Y : num 28.7 28.7 28.7 28.7 28.7 ... $ Depth: num 67.3 68 68.1 68.1 68.2 ... write.csv(dem_veriseti, file = "dem_latlong.csv") #Yeni formatın çıktısı
Not : Elimdeki 113000 satır veri grubunun arasında boş satırlar olduğundan böyle bir yöntem uyguladım. Daha kolay ya da farklı yollar olduğuna şüphem yok.
No comments:
Post a Comment