Find a specific item in the list for a variable when list is dinamic

273 views Asked by At

I have multiple values (a list of values) for variable x(i). For example x(1):

[1] "$30 1 d"              "$250 2 d"             "$300 3 d"            
 [4] "$100 3 d"             "$10 4 d"              "$30 1 d"             
 [7] "$250 2 d"             "$300 3 d"             "$100 3 d"            
[10] "$10 4 d"              "OrganizerBoyette, FL" "Team member"  

I want to find the word after "organizer" for variable X(1). For instance here is Boyette, FL (The name of city and state after organizer). Here organizer is the 11th value in the list. Maybe for variable x(2), another output for person 2, the organizer may be located in the 9th value in the list. Could you help me in writing a code in R for solving this issue? I want to find the name of the city and state for each person.

1

There are 1 answers

2
jpdugo17 On

Maybe this can help:

library(tidyverse)
library(stringr)
library(rebus)
#> 
#> Attaching package: 'rebus'
#> The following object is masked from 'package:stringr':
#> 
#>     regex
#> The following object is masked from 'package:ggplot2':
#> 
#>     alpha

#create some data
data <- map(1:5, ~  rep('abcde', .x)) 

for (i in seq_along(data)) {
    data[[i]][[i]] <- 'OrganizerBoyette, FL'
}

data
#> [[1]]
#> [1] "OrganizerBoyette, FL"
#> 
#> [[2]]
#> [1] "abcde"                "OrganizerBoyette, FL"
#> 
#> [[3]]
#> [1] "abcde"                "abcde"                "OrganizerBoyette, FL"
#> 
#> [[4]]
#> [1] "abcde"                "abcde"                "abcde"               
#> [4] "OrganizerBoyette, FL"
#> 
#> [[5]]
#> [1] "abcde"                "abcde"                "abcde"               
#> [4] "abcde"                "OrganizerBoyette, FL"

#subsetting Organizer 
map(data, ~ str_subset(.x, pattern = 'Organizer') %>%
        str_match_all('Organizer' %R% capture('.*$'))) %>% flatten() 
#> [[1]]
#>      [,1]                   [,2]         
#> [1,] "OrganizerBoyette, FL" "Boyette, FL"
#> 
#> [[2]]
#>      [,1]                   [,2]         
#> [1,] "OrganizerBoyette, FL" "Boyette, FL"
#> 
#> [[3]]
#>      [,1]                   [,2]         
#> [1,] "OrganizerBoyette, FL" "Boyette, FL"
#> 
#> [[4]]
#>      [,1]                   [,2]         
#> [1,] "OrganizerBoyette, FL" "Boyette, FL"
#> 
#> [[5]]
#>      [,1]                   [,2]         
#> [1,] "OrganizerBoyette, FL" "Boyette, FL"

map(data, ~ str_subset(.x, pattern = 'Organizer') %>%
        str_match_all('Organizer' %R% capture('.*$'))) %>% flatten() %>%
    reduce(rbind)
#>      [,1]                   [,2]         
#> [1,] "OrganizerBoyette, FL" "Boyette, FL"
#> [2,] "OrganizerBoyette, FL" "Boyette, FL"
#> [3,] "OrganizerBoyette, FL" "Boyette, FL"
#> [4,] "OrganizerBoyette, FL" "Boyette, FL"
#> [5,] "OrganizerBoyette, FL" "Boyette, FL"

Created on 2021-06-07 by the reprex package (v2.0.0)