-2

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

从图片 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

谢谢!

4

2 回答 2

2

试试这个:

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

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

于 2013-07-18T13:08:42.380 回答
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
于 2013-07-18T13:33:17.977 回答