从R中的字符串获取缩写

时间:2018-05-01 14:25:58

标签: r

从字符串中提取首字母的最佳方法是什么(除了最后一个单词)?例如转换" GEORGE SMITH BROGAN"到" 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 :(得分:2)

我们可以尝试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"

或将strsplitpaste

一起使用
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"

答案 1 :(得分:0)

以下是使用gsub的另一种方法:

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