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") |
Brrrr!
„strona kodowa windows-1250, którą zakodowałem polskie znaczki w zbiorze danych Diagnoza Społeczna źle wygląda pod Linuxami.”
Wierutna bzdura. Co najwyżej jak się wczyta dane korzystając ze złej strony kodowej, to się ma śmieci. Strona kodowa „nie wygląda”, co najwyżej czcionka może źle wyglądać, ale to odrębny problem.
„Można też było zmienić kodowanie na UTF-8, ale usunięcie ogonków gwarantuje zgodność z każdym systemem operacyjnym.”
No nie, np. nie w tych które korzystają z EBCDIC (IBM) czy UTF-16 (windowsy).
„R”
Wystarczy iconv -f cp1250 . Pisanie do tego skryptu to IMHO overkill.
„Zmieniłem więc pliki z danymi usuwając znaki diaktrytyczne.”
Zła odpowiedź na źle postawiony problem. Jedyna rzecz która mnie drażni na tym (wspaniałym skądinąd) blogu, to występujący miejscami brak polskich literek. Kasowanie polskich znaków diakrytycznych w odpowiedzi na brak umiejętności „Krysztofa T.” to równanie w dół, czyli coś czemu ten blog ma za cel przeciwdziałać.
Dziękuję za komentarz,
Z mojej strony obiecuję przykładać uwagi do ogonków we wpisach.