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

时间:2016-04-01 12:59:13

标签: r

我有一个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

1 个答案:

答案 0 :(得分:4)

我们可以通过将字词与字符数超过2(sub)匹配来使用\\w{3,},将其捕获为一个组(通过用()包装),然后再添加一个白色空格(\\s+)后跟一个非空白字符(\\S+)。在替换中,我们使用捕获的字符串的反向引用(\\1)。这将确保它只匹配超过2个字符的单词,并保留所有这些字符串。

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