Niepoprawny ciąg wielobajtowy w read.csv

Próbuję zaimportować plik CSV w języku japońskim. Ten kod:

url <- 'http://www.mof.go.jp/international_policy/reference/itn_transactions_in_securities/week.csv'
x <- read.csv(url, header=FALSE, stringsAsFactors=FALSE)

otrzymuje error:

Error in type.convert(data[[i]], as.is = as.is[i], dec = dec, na.strings = character(0L)) : 
invalid multibyte string at '<91>ΊO<8b>y<82>ёΓ<e0><8f>،<94><94><84><94><83><8c>_<96>񓙂̏󋵁@(<8f>T<8e><9f><81>E<8e>w<92><e8><95>񍐋@<8a>փx<81>[<83>X<81>j'

Próbowałem zmienić kodowanie (kodowanie (url) <- 'UTF-8', a także latin1) i usunąć parametry read.csv, ale otrzymałem ten sam komunikat „nieprawidłowy ciąg wielobajtowy” w każdym przypadku. Czy należy zastosować inne kodowanie, czy jest to jakiś inny problem?

1 odpowiedź

Encoding ustawia kodowanie ciągu znaków. Nie ustawia kodowania pliku reprezentowanego przez ciąg znaków, co jest tym, czego chcesz.

Działa to u mnie po wypróbowaniu „UTF-8”:

x <- read.csv(url, header=FALSE, stringsAsFactors=FALSE, fileEncoding="latin1")

Możesz też pominąć pierwsze 16 wierszy i przeczytać osobno nagłówki. Tak czy inaczej, jest jeszcze sporo do zrobienia.

x <- read.csv(url, header=FALSE, stringsAsFactors=FALSE,
  fileEncoding="latin1", skip=16)
# zacznij od czyszczenia
x[,1] <- gsub("\u0081|`", "", x[,1])    # pozbądź się dziwnych postaci
x[,-1] <- as.data.frame(lapply(x[,-1],  # przekonwertuj na liczby
  function(d) type.convert(gsub(d, pattern=",", replace=""))))

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.