我有一个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 - 这让我感到困惑
使用正则表达式:
text <- c("Baltimore Orioles","Kansas City Chiefs")
gsub("^.*\\s", "", text)
[1] "Orioles" "Chiefs"
Run Code Online (Sandbox Code Playgroud)
正则表达式搜索:
^ 表示字符串的开头.* 意味着任何角色,重复\\s 意味着一个白色空间gsub 找到这个模式并用空字符串替换它,留下每个字符串的最后一个单词.