嘿,我有一个数据集,我手工采摘以下7项为例:如何使用stringr和正则表达式来转换字符串(更改,保留,提取)与一些例外?
mydf <- data.frame(transmission = c('Auto(L3)','Auto(L4)','Auto (S4)','Automatic (6-spd)','Automatic (L3)',
'Automatic (variable gear ratios)', 'Manual 4-spd'))
这是
transmission
1 Auto(L3)
2 Auto(L4)
3 Auto (S4)
4 Automatic 6-spd
5 Automatic (L3)
6 Automatic (variable gear ratios)
7 Manual 4-spd
的要求是自动(...)转换为自动.. - 自动(L3)到自动L3,自动(S4)到自动S4 - 除去'(',')',' - '或'',除了手动或自动之后的第一个空白 - -spd)自动6spd。
结果应该yiedl:
transmission
1 Automatic L3
2 Automatic L4
3 Automatic S4
4 Automatic 6spd
5 Automatic L3
6 Automatic variablegearratios
7 Manual 4spd
目前我使用的可能是最笨的办法:
transmission %>%
str_replace_all(' \\(',' ') %>%
str_replace_all('Auto ','Automatic ') %>%
str_replace_all(' ','') %>%
str_replace_all('[()-]','') %>%
str_replace_all('Automatic','Automatic ') %>%
str_replace_all('Manual','Manual ')
但它是如此不必要的冗余和耗时。 用stringr软件包(str_xxx函数)和正则表达式做正确的方法是什么?
在此先感谢。