Polskie ogonki a iconv()

Napisał do mnie maila Krzysztof T. z informacją, że strona kodowa windows-1250, którą zakodowałem polskie znaczki w zbiorze danych Diagnoza Społeczna źle wygląda pod Linuxami.

Zmieniłem więc pliki z danymi usuwając znaki diaktrytyczne. Można też było zmienić kodowanie na UTF-8, ale usunięcie ogonków gwarantuje zgodność z każdym systemem operacyjnym.

Do zmiany kodowania w programie R można użyć funkcji iconv(), która wykorzystuje specyficzne dla systemu narzędzia do konwersji. Listę obsługiwanych stron kodowych wyświetla funkcja iconvlist().

Poniżej przykładowy kod R który usuwa znaki diaktrytyczne ze zbioru danych diagnozaOsoby2011. Podanie argumentu to=”UTF-8″ spowodowałoby konwersje do formatu UTF-8. W systemie Windows od wersji R 2.11 aby usunąć ogonki należy podać argument to=”ASCII//TRANSLIT”, pod innymi systemami wystarczy to=”ASCII”.

 

# konwertujemy nazwy kolumn
colnames(diagnozaOsoby2011) <- iconv(colnames(diagnozaOsoby2011), from="windows-1250", to="ASCII//TRANSLIT")
 
# konwertujemy nazwy poziomów w zmiennych jakościowych
for (i in 1:ncol(diagnozaOsoby2011)) 
   if ("factor" %in% class(diagnozaOsoby2011[,i])) 
      levels(diagnozaOsoby2011[,i]) <- iconv(levels(diagnozaOsoby2011[,i]), from="windows-1250", to="ASCII//TRANSLIT")