кодировать специальные символы в R - PullRequest
0 голосов
/ 06 января 2020

В моем наборе данных много фамилий. Эти фамилии пишутся с помощью умлаутов, а также других специальных символов (таких как č, á, ñ, et c.).

Считывание данных следующим образом (с использованием encoding = "latin1") Мне удалось правильно отобразить умляуты:

read_data <- function(directory,debug=FALSE){
  file_list = list.files(path = directory,
                       pattern = "*.csv",
                       full.names = TRUE);

  df_read = data.frame();

  for (filename in file_list){
    df_temp = read_delim(filename,
                      delim=';',
                      locale = locale(encoding = "latin1"));

    if(debug){
      print(paste0(c(filename, " : ", dim(df_temp))));  
    }

    df_read = rbind(df_read, df_temp);

  }

  names(df_read) = make.names(names(df_read))

  return(df_read)
}

К сожалению, я не могу правильно отобразить другие специальные символы. Есть ли другой стиль кодирования, который я могу использовать, или другой способ чтения в моих файлах csv, включая все специальные символы?

1 Ответ

0 голосов
/ 11 января 2020

Между тем, я пробовал много разных способов решить мою проблему кодирования. Лучшее, что я мог получить, это использовать следующую функцию чтения:

read_data <- function(directory,debug=FALSE){
  file_list = list.files(path = directory,
                       pattern = "*.csv",
                       full.names = TRUE);

  df_read = data.frame();

  for (filename in file_list){
    df_temp = read.csv(filename,encoding="UTF-16LE", sep=";", header=TRUE);

    if(debug){
      print(paste0(c(filename, " : ", dim(df_temp))));  
    }

    df_read = rbind(df_read, df_temp);

  }

  names(df_read) = make.names(names(df_read))

  return(df_read)
}

Есть еще один специальный символ, который отображается как «?», Но остальная часть проблемы может быть решена с помощью используя «read.csv» вместо «read_delim» и используя кодировку «UTF-16LE»

...