R и Excel: пространство, которое не является общим пространством, отображается в R

#r #excel #space

#r #excel #Космос

Вопрос:

У меня есть лист Excel со столбцами, где некоторые записи содержат в конце строки пробел. Например: «SS» и «SS», последний с пробелом. Это видно, только если я щелкну в ячейке. Когда я пытаюсь заменить пробел с помощью пробела на «» и ctrl h, он не находит пробел. Очевидно, что это не общее пространство. Я попытался вставить общий пробел где-нибудь еще (с помощью пробела), и я могу найти это (пробел)-пробел. Итак, я предполагаю, что это особый пробел. Если я скопирую пробел в этой ячейке и использую его с помощью ctrl h, я могу заменить его на «».

Когда я импортирую лист Excel в R (используя ess-emacs) перед заменой, я получаю следующие записи:

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

Подчеркивание не является обычным подчеркиванием и не может быть заменено на «» с помощью sub . Теперь мне интересно, что это за пробел и как я могу справиться с этим в R (то есть удалить этот пробел / подчеркивание).

Комментарии:

1. Особенно, если источником данных является html или веб-документ, эти пробелы часто являются NBSP кодом 160 . Вы можете найти / заменить их в Excel, введя код в поле поиска, удерживая клавишу alt во время ввода 0160 на цифровой клавиатуре

2. @RonRosenfeld Спасибо. Это так!

Ответ №1:

Я не могу гарантировать, что это сработает (поскольку Unicode и т.д. обработка может варьироваться от платформы к платформе), но ?trimws предполагает, что использование whitespace = "[\h\v]" будет работать:

 > z <- data.frame(1:2,2:3)
> names(z) <- c("a  ","bu00a0")  ## column name with Unicode space
> z
  a   b 
1   1  2
2   2  3
> names(z)
[1] "a  " "b " 
> trimws(names(z))  ## default doesn't remove space after 'b'
[1] "a"  "b "
> trimws(names(z), whitespace="[\h\v]")
[1] "a" "b"