R中的字符串操作创建dataframe列

pss*_*guy 1 string r

我有一个R数据帧(df),其中包括一个因子列Team

Team
Baltimore Orioles
Kansas City Chiefs
...
Run Code Online (Sandbox Code Playgroud)

我只想创建一个新列,昵称,它只是引用姓氏

Nickname
Orioles
Chiefs
Run Code Online (Sandbox Code Playgroud)

作为第一阶段,我尝试分割这样的因素

df$Nickname <- strsplit(as.character(df$Team), " ")
Run Code Online (Sandbox Code Playgroud)

它产生一个我可以参考的字符字段列表

>df$Nickname[1]

[[1]]
[1] "Baltimore" "Orioles"
Run Code Online (Sandbox Code Playgroud)

>str(df$Nickname[1])

List of 1
 $ : chr [1:2] "Baltimore" "Orioles"
Run Code Online (Sandbox Code Playgroud)

但后来我不知道该怎么办.试图获得长度

长度(DF $昵称[1])

给1 - 这让我感到困惑

And*_*rie 7

使用正则表达式:

text <- c("Baltimore Orioles","Kansas City Chiefs")

gsub("^.*\\s", "", text)
[1] "Orioles" "Chiefs" 
Run Code Online (Sandbox Code Playgroud)

正则表达式搜索:

  • ^ 表示字符串的开头
  • .* 意味着任何角色,重复
  • \\s 意味着一个白色空间

gsub 找到这个模式并用空字符串替换它,留下每个字符串的最后一个单词.