在R编程的一列中提取含有“string”数据的行

Excel文件包含数字,字母和字母数字的许多列。

Column1 Column2 column2 1 1 abcd fm1 2 2 bcde fm2 3 3 cdef fm3 4 4 aced fm4 5 5 cadf fm5 

我已经在R中导入了文件

 data1 <- read.csv("Test1.csv") 

现在要在R编程的第2列中提取包含“cd”的数据的行。

 df <- structure(list(Column1 = 1:5, Column2 = c("abcd", "bcde", "cdef", "aced", "cadf"), column2 = c("fm1", "fm2", "fm3", "fm4", "fm5" )), .Names = c("Column1", "Column2", "column2"), class = "data.frame", row.names = c(NA, -5L)) 

你可以使用grep

 df[grep('cd', df$Column2),] 

数据

 df <- structure(list(Column1 = 1:5, Column2 = c("abcd", "bcde", "cdef", "aced", "cadf"), column2 = c("fm1", "fm2", "fm3", "fm4", "fm5" )), .Names = c("Column1", "Column2", "column2"), class = "data.frame", row.names = c(NA, -5L)) 

我所维护的包中的qdap中Search函数使得这个任务非常简单:

 library(qdap) Search(df, "cd", 2, 0) ## Column1 Column2 column2 ## 1 1 abcd fm1 ## 2 2 bcde fm2 ## 3 3 cdef fm3 

第一个参数是data.frame,第二个术语,可选的第三个参数是列名或数字,第四个是string距离,因为函数默认为模糊匹配。 使用0使其完全匹配。

在看到上面的@akrun提供的答案之前,我把它们放在一起:

  #Data dF <- structure(list(Column1 = 1:5, Column2 = c("abcd", "bcde", "cdef", "aced", "cadf"), column2 = c("fm1", "fm2", "fm3", "fm4", "fm5" )), .Names = c("Column1", "Column2", "column2"), class = "data.frame", row.names = c(NA, -5L)) #Find rows with the string "cd" in the second column of the dataFrame 'dF' rows <- grep("cd", dF$Column2, ignore.case = F) #Display those rows dF[rows,] 

grep()函数 – 和它的表兄弟 – 很简单,一旦你得到正则expression式的诅咒,它是非常强大的。