R 将特定子字符串检测为大字符串

R 将特定子字符串检测为大字符串,r,R,我把这类数据放在字符矩阵的一列中。我想对V1列应用一些grep函数来检测“OK”、“ERROR”或“NOISE”字符串,并将它们保存到一个新列中 来自img 1 "";"V1" "img1";"19293.jpg : H344.8º : OK" "img1";"19293.jpg : 9.6Kt : OK" "img1";"19293.jpg : 44º31.449H'N : ERROR" "img1";"19293.jpg : 2º31.238'W : OK" "img2";"19294.j

我把这类数据放在字符矩阵的一列中。我想对V1列应用一些grep函数来检测“OK”、“ERROR”或“NOISE”字符串,并将它们保存到一个新列中

来自img 1

"";"V1"
"img1";"19293.jpg : H344.8º : OK"
"img1";"19293.jpg : 9.6Kt : OK"
"img1";"19293.jpg : 44º31.449H'N : ERROR"
"img1";"19293.jpg : 2º31.238'W : OK"

"img2";"19294.jpg : H344.8º : OK"
"img2";"19294.jpg : 9.6Kt : OK"
"img2";"19294.jpg : 44º31.449H'N : NOISE"
"img2";"19294.jpg : 2º31.238'W : OK"

"img3";"19295.jpg : H344.8º : OK"
"img3";"19295.jpg : 9.6Kt : OK"
"img3";"19295.jpg : 44º31.449H'N : OK"
"img3";"19295.jpg : 2º31.238'W : OK"

直到img n

谢谢

试试这个:

 data$extracted <- gsub('^.*(OK|ERROR|NOISE)$|^.*$', '\\1', data$V1)

data$extracted用

x <- read.table( "data.dat", sep = ";", header = TRUE )

我想你指的是三个新的列,分别代表OK、ERROR和NOISE?我看你是新来的。当您发布数据时,请确保其他人可以将该数据粘贴到R中并运行它。使用
dput
(或
dput(头(x,10))
)确保我们可以轻松运行您的数据。是的,我是新来的。。。好的,下次我会尽量这样做。谢谢!;)
library( stringr )
x$extr <- word( x[,2], -1 )
x
      X                               V1  extr
1  img1         19293.jpg : H344.8º : OK    OK
2  img1           19293.jpg : 9.6Kt : OK    OK
3  img1 19293.jpg : 44º31.449H'N : ERROR ERROR
4  img1      19293.jpg : 2º31.238'W : OK    OK
5  img2         19294.jpg : H344.8º : OK    OK
6  img2           19294.jpg : 9.6Kt : OK    OK
7  img2 19294.jpg : 44º31.449H'N : NOISE NOISE
8  img2      19294.jpg : 2º31.238'W : OK    OK
9  img3         19295.jpg : H344.8º : OK    OK
10 img3           19295.jpg : 9.6Kt : OK    OK
11 img3    19295.jpg : 44º31.449H'N : OK    OK
12 img3      19295.jpg : 2º31.238'W : OK    OK