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