如何在值中提取字符组件并使用-99替换值

1 regex r

我的数据如下:

VAR_A: 134, 15M3, 2004, 301ME, 201E, 41, 53, 22
Run Code Online (Sandbox Code Playgroud)

我想改变这个向量,如下所示:

VAR_A: 134, -99, 2004, -99, -99, 41, 53, 22
Run Code Online (Sandbox Code Playgroud)

如果值包含字符(例如M,E),我想改变这些值与-99.我怎么能在R?我听说正则表达式可能是一种方式,但我并不擅长.

hwn*_*wnd 6

在我看来,你想要替换不是数字的值,如果是这样的话......

x <- c('134', '15M3', '2004', '301ME', '201E', '41', '53', '22')
sub('.*\\D.*', '-99', x)
# [1] "134"  "-99"  "2004" "-99"  "-99"  "41"   "53"   "22"
Run Code Online (Sandbox Code Playgroud)

或者基本上你可以这样做:

x[grepl('\\D', x)] <- -99
as.numeric(x)
# [1]  134  -99 2004  -99  -99   41   53   22
Run Code Online (Sandbox Code Playgroud)