使用字母表的条件计数返回字符串中第一个空格前的字符



我有一个df,考虑

ID     Name
1     Jon Wick
2     Ronny
3     Misha Mansoor
4     Ed Hermids
5     Ro Misha

我想用两种方式处理这个

  • 如果名称字符串中第一个空格之前的"名字"中包含的字母少于3个,则返回全名
  • 如果它在第一个空格前的名字中包含超过3个字母,则只返回"名字"

留下一个单词的名字。

还需要将其存储在数据帧中。

结果应为

ID     Name
1     Jon
2     Ronny
3     Misha
4     Ed Hermids
5     Ro Misha

我们可以使用sub,方法是匹配字符数超过2的单词(\w{3,}),将其作为一个组捕获(用()包装),然后再加一个空白字符(\s+),然后加一个非空白字符(\S+)。在替换中,我们使用捕获字符串的backreference(\1)。这将确保它只匹配那些超过2个字符的单词,并保留所有这些字符串。

sub("(\w{3,})\s+\S+", "\1", df1$Name)
#[1] "Jon"        "Ronny"      "Misha"      "Ed Hermids" "Ro Misha" 

最新更新