Получение инициалов из строки в R - PullRequest
0 голосов
/ 01 мая 2018

Каков наилучший способ извлечь инициалы из строки (кроме последнего слова)? Например, преобразовать "Джордж Смит Броган" в "GS BROGAN"

NAMES <- data.frame(ID = c("GEORGE SMITH BROGAN","ADAM STEVE WILLIS","UNITED INTERNATIONAL SHIPPING STATION") 

Желаемым выводом для вышеперечисленных имен будет GS BROGAN, AS WILLIS, UIS STATION.

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Вот другой метод, использующий gsub:

gsub('\\s(?![A-Z]+$)', '', 
     gsub('(?<!\\s|^)[A-Z]+\\s', ' ', NAMES$ID, 
          perl = TRUE), perl = TRUE)
# [1] "GS BROGAN"   "AS WILLIS"   "UIS STATION"
0 голосов
/ 01 мая 2018

Мы можем попробовать с gsub

gsub("\\s+(?=[A-Z]\\b)", "", 
   gsub("\\b([A-Z])\\w+\\s|\\s(\\w+)$", "\\1 \\2", NAMES$ID), perl = TRUE)
#[1] "GS BROGAN"   "AS WILLIS"   "UIS STATION"

Или используйте strsplit с paste

sapply(strsplit(as.character(NAMES$ID), "\\s+"),
  function(x) paste(paste(substr(x[-length(x)], 1, 1), collapse=""), 
      x[length(x)]))
#[1] "GS BROGAN"   "AS WILLIS"   "UIS STATION"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...