将特定子串检测成大字符串

时间:2013-07-18 13:00:12

标签: 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.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

谢谢!

2 个答案:

答案 0 :(得分:2)

试试这个:

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

这可以确保保留您搜索的字符串,否则将使用空字符串。

答案 1 :(得分:1)

使用

读入您的数据文件
x <- read.table( "data.dat", sep = ";", header = TRUE )

添加最后一个单词x$v1

的列
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