Find string in data.frame

后端 未结 4 1676
清歌不尽
清歌不尽 2021-01-05 01:12

How do I search for a string in a data.frame? As a minimal example, how do I find the locations (columns and rows) of \'horse\' in this data.frame?



        
相关标签:
4条回答
  • 2021-01-05 01:33

    Another way around:

    l <- sapply(colnames(df), function(x) grep("horse", df[,x]))
    
    $animal
    [1] 2 3
    
    $level
    [1] 5
    
    $length
    [1] 4
    

    If you want the output to be matrix:

    sapply(l,'[',1:max(lengths(l)))
    
         animal level length
    [1,]      2     5      4
    [2,]      3    NA     NA
    
    0 讨论(0)
  • 2021-01-05 01:35

    We can get the indices where the value is equal to horse. Divide it by number of rows (nrow) to get the column indices and by columns (ncol) to get the row indices.

    We use colnames to get column names instead of indices.

    data.frame(col = colnames(df)[floor(which(df == "horse") / (nrow(df) + 1)) + 1], 
               row = floor(which(df == "horse") / ncol(df)) + 1)
    
    #   col   row
    #1 animal   1
    #2 animal   2
    #3  level   4
    #4 length   5
    
    0 讨论(0)
  • 2021-01-05 01:52

    What about:

    which(df == "horse", arr.ind = TRUE)
    #      row col
    # [1,]   2   1
    # [2,]   3   1
    # [3,]   5   2
    # [4,]   4   3
    
    0 讨论(0)
  • 2021-01-05 01:53

    Another way to do it is the following:

    library(data.table)
    library(zoo)
    library(dplyr)
    library(timeDate)
    library(reshape2)
    data frame name = tbl_account
    

    first,Transpose it :

    temp = t(tbl_Account)
    

    Then, put it in to a list :

    temp = list(temp)
    

    This essentially puts every single observation in a data frame in to one massive string, allowing you to search the whole data frame in one go.

    then do the searching :

    temp[[1]][grep("Horse",temp[[1]])] #brings back the actual value occurrences
    grep("Horse", temp[[1]]) # brings back the position of the element in a list it occurs in 
    

    hope this helps :)

    0 讨论(0)
提交回复
热议问题