R H2O пакет импорта CSV-файла с китайскими иероглифами

У меня есть большой набор данных в csv формат для построения модели прогнозирования. Из-за его размера я планировал использовать h2o пакет в R, чтобы построить модель. Однако данные в нескольких столбцах data.frame, содержит некоторые китайские упрощенные символы и h2o испытывает затруднения при получении данных.

Я пробовал два разных подхода. Первый подход включал непосредственное чтение из файла с использованием h2o.importFile() функция для импорта данных. Тем не менее, этот подход в конечном итоге превращает китайские иероглифы в некоторые грязные коды.

Второй подход, который я пытался сначала перенести в R, используя данные readr и база R read_csv/read.csv функции. После того, как данные загружены правильно в R, я попытался преобразовать data.frame в h2o использование кадра as.h2o функция. Хотя конечный результат этого подхода также привел к неправильному переводу.

Чтобы проиллюстрировать это, я написал следующий фрагмент кода в качестве примера:

require(h2o)
dat<-data.frame(x=rep(c("北京","上海"),50),
                y=rnorm(mean=10,sd=3,n=100))
h2o.init(nthreads=-1)
h2o.dat<-as.h2o(dat)

3 ответа

Я бы посчитал это ошибкой, поскольку data.frame R может отображать символы, но в то же время R H2OFrame не может. Я проверил, что это работает для H2OFrames в Python, так что это только проблема R. Я подал ошибку здесь.

Я не знаю, является ли это лучшим способом, но я работал над корейскими данными раньше, и этот процесс я обычно придерживаюсь. Во-первых, убедитесь, что данные, которые вам нужно прочитать, закодированы как "UTF-8". Во-вторых, убедитесь, что языковой стандарт установлен на английский.

Sys.getlocale(category="LC_ALL")

Затем вы можете прочитать файл, используя следующую инструкцию,

dat <- read.csv("Test.txt",header=T,encoding = "UTF-8",stringsAsFactors = F)

dat[,1]
[1] "北京" "上海" "北京" "上海"

dat
        X.U.FEFF.X Y
1 <U+5317><U+4EAC> 1
2 <U+4E0A><U+6D77> 2
3 <U+5317><U+4EAC> 3
4 <U+4E0A><U+6D77> 4

Как вы можете видеть, когда вы просматриваете весь data.frame, вы видите их как кодировку "UTF-8", но вы также можете посмотреть на китайские символы, используя df[1,] и глядя на каждый вектор.

Ваша проблема связана только с тем, что R не показывает закодированный символ внутри кадров H2O, однако данные внутри кадров H2 все еще полностью сохраняются, как и в исходном кадре. Как только вы используете H2O Web/FLOW UI и увидите кадр h2o, вы увидите, что данные внутри кадра h2o в точности совпадают с исходным кадром. На следующем рисунке показаны результаты в различных местах, например, RStudio, окно просмотра R и интерфейс H2O FLOW.

введите описание изображения здесь

Пожалуйста, перейдите по ссылке ниже для решения, однако вы должны иметь возможность обновлять локальные данные на вашем компьютере, чтобы просматривать эти символы во фреймах данных H2O:

как читать данные в формате UTF-8 в R?

Другие вопросы по тегам