我有以下data.table
library(data.table)
dt <- data.table(c('Female 18 - 24', 'Male 18+', 'People 18 -54'))
如何将其转换为
dt <- data.table(c('F 18 - 24', 'M 18+', 'P 18 -54'))
使用regex
吗?
答案 0 :(得分:2)
gsub('(^[A-Z])[A-Za-z]+\\s(*.)','\\1 \\2',c('Female 18 - 24', 'Male 18+', 'People 18 -54'))
[1] "F 18 - 24" "M 18+" "P 18 -54"
(^[A-Z])
将第一个字母作为group1
[A-Za-z]+\\s
由空格引起的任意数量的小写字母
(*.)
将位于空格后的所有内容作为group2
'\\1 \\2'
最后,返回以空格分隔的group1和group2
答案 1 :(得分:0)
require(data.table)
require(stringi)
dt <- data.table(V1=c('Female 18 - 24', 'Male 18+', 'People 18 -54'))
dt[,V2:= stri_replace_first_regex(V1,"(?<=\\w)\\w+","")]
dt
V1 V2
1: Female 18 - 24 F 18 - 24
2: Male 18+ M 18+
3: People 18 -54 P 18 -54