Итак, у меня есть база данных, которая содержит имена нескольких людей, но имена кодируются в 3 различных форматах, в основном UTF-8, Latin-1 и ASCII. Поэтому я импортировал данные, используя функцию data.table
fread
, используя опции encoding = "UTF-8"
и encoding = "Latin-1"
. Однако наблюдения с ASCII по-прежнему ошибочно отображаются. Вот пример того, как выглядят первые несколько имен:
NAMES
1: NICOL<c0>S
2: CAR<d1>PS
3: MU<d1>OZ
4: CATA<d1>O
Я хочу отфильтровать эти наблюдения, я попытался отфильтровать данные, используя что-то вроде:
data[grepl("\\<c0\\>", NAMES)]
однако, это не работает, так как grepl("\\<c0\\>", NAMES)
возвращает все результаты как FALSE
. На самом деле единственный способ, которым мне удалось получить желаемое совпадение, это сделать:
data[grepl("À", data$NAMES, useBytes = T)]
Однако, хотя я понимаю, что происходит (по большей части), я не понимаю, почему я должен поставить де Символ ASCII «А» внутри grepl()
вместо отображаемого текста R. В основном это <c0>
в "NICOL<c0>S"
.
Это проблема, потому что это не всегда работает. В частности, с "С", поэтому в приведенных выше примерах данных строки 2
и 3
имеют "С", но вместо этого отображаются как <d1>
и замена С на grepl()
не будет работать. То есть код:
data[grepl("Ñ", data$NAMES, useBytes = T)]
Было бы также неплохо узнать, есть ли лучший / более эффективный способ сделать это. Спасибо!
Воспроизводимость
Для получения этих результатов вы можете загрузить небольшой образец здесь . Пожалуйста, не забудьте импортировать данные, используя fread(stack.csv, encoding = "UTF-8")
, чтобы получить то же самое Результаты. Это необходимо, потому что этот файл содержит NAMES
только в формате ASCII, и поэтому, если вы не укажете encoding = "UTF-8"
, данные будут импортированы по-другому (фактически, показывая серьезные акценты, по некоторым причинам, однако это не может быть воспроизведено в масштабе со всем набором данных) ). Извините, что по какой-то причине я не смог сделать это с помощью консольных команд, это не приводит к воспроизведению примера.
Редактировать 1: добавлен раздел Воспроизводимость.