Language text find the frequency based on a different vector

c("[American Indian/Alaska Native] & [European]", "[White/ European American]", "[European] & [White/ European American]", "[Latino/Hispanic] & [Mexican]", "[White/ European American]", "[White/ European American]", "[Latino/Hispanic]", NA, "[European]", "[White/ European American]", "[Other]", "[White/ European American]", "[White/ European American]", "[White/ European American]", "[White/ European American]", "[White/ European American]", "[White/ European American]", "[African]", "[Latino/Hispanic] & [South American]", "[Black or African American]", "[Black or African American]", "[White/ European American]", "[White/ European American]", "[White/ European American]", "[White/ European American]", "[White/ European American]", "[White/ European American]", "[American Indian/Alaska Native] & [White/ European American]", "[White/ European American]", "[Other]", "[White/ European American] & [South American]", "[White/ European American]", "[Korean] & [White/ European American]", "[White/ European American]", "[European]", "[European]", "[White/ European American]", "[Vietnamese]", "[Filipino]", "[White/ European American]", "[Filipino] & [Chinese]", "[White/ European American]", "[White/ European American]", "[White/ European American]", "[Mexican]", "[European] & [White/ European American]", "[White/ European American]", "[Mexican]", "[White/ European American]", "[Filipino] & [White/ European American]", "[White/ European American]", "[Asian or Asian American]", "[White/ European American]", "[Middle Eastern/North African]", "[Other Asian]", "[White/ European American]", "[American Indian/Alaska Native]", "[Black or African American]", "[European]", "[White/ European American]", "[White/ European American]", "[Other Asian]", "[White/ European American]", "[White/ European American]", "[Black or African American] & [Caribbean]", "[White/ European American]", "[European]", "[White/ European American]", "[European] & [White/ European American]", "[Other Pacific Islander]", "[Black or African American] & [White/ European American]", "[White/ European American]", "[White/ European American]", "[White/ European American]", "[White/ European American]", "[Other]", "[White/ European American]", "[American Indian/Alaska Native]", "[White/ European American]", "[White/ European American]", "[White/ European American]", "[White/ European American]", "[White/ European American]", "[White/ European American]", "[Black or African American]", "[White/ European American]", "[Other Pacific Islander] & [Ukrainian] & [White/ European American]", "[White/ European American]", NA, "[White/ European American]", "[White/ European American]", "[White/ European American]", "[Other]", "[White/ European American]", "[European] & [White/ European American]", "[White/ European American]", "[White/ European American]", "[White/ European American]", "[White/ European American] & [Latino/Hispanic]")

Sorry, for some reasons my tibble didn't work for datapasta. I use this way to reprex my data.
There is another column has a list of languages that cleaned from this reprex, like this:

tibble::tribble(
                     ~ethnicity,    ~n,
                      "African",   44L,
"American Indian/Alaska Native",   86L,
      "Asian or Asian American",  166L,
    "Black or African American",  123L,
                    "Caribbean",   12L,
             "Central American",   23L,
                      "Chinese",   62L,
                     "European",  196L,
                     "Filipino",  107L,
                     "Japanese",   41L,
                       "Korean",   59L,
              "Latino/Hispanic",  182L,
                      "Mexican",  147L,
 "Middle Eastern/North African",   40L,
              "Native Hawaiian",   11L,
                        "Other",  131L,
                  "Other Asian",   52L,
       "Other Pacific Islander",   33L,
                      "Russian",   36L,
                       "Samoan",    6L,
               "South American",   30L,
             "South East Asian",   28L,
                    "Ukrainian",   33L,
                   "Vietnamese",   93L,
     "White/ European American", 1618L,
                             NA,  148L
)
clean_reprex <- tibble::tribble(
                     ~ethnicity,    ~n,
                      "African",   44L,
"American Indian/Alaska Native",   86L,
      "Asian or Asian American",  166L,
    "Black or African American",  123L,
                    "Caribbean",   12L,
             "Central American",   23L,
                      "Chinese",   62L,
                     "European",  196L,
                     "Filipino",  107L,
                     "Japanese",   41L,
                       "Korean",   59L,
              "Latino/Hispanic",  182L,
                      "Mexican",  147L,
 "Middle Eastern/North African",   40L,
              "Native Hawaiian",   11L,
                        "Other",  131L,
                  "Other Asian",   52L,
       "Other Pacific Islander",   33L,
                      "Russian",   36L,
                       "Samoan",    6L,
               "South American",   30L,
             "South East Asian",   28L,
                    "Ukrainian",   33L,
                   "Vietnamese",   93L,
     "White/ European American", 1618L,
                             NA,  148L
)

My goal is to compare reprex and clean-reprex, and then give the frequency based on
how many languages each reprex's row contains.

Please teach me.
Thanks

Could you elaborate a little more in your question? is very confusing as it is right now, a reprex is short for "reproducible example", and you are just showing two copies of a dataframe so I don't understand what you mean by "compare reprex and clean-reprex", also what do you mean by "how many languages"? in your data are only ethnicities written in English, so just one language.

My bad, andresrcs,

The first data is raw_data. The second data is clean_data, which you help me last time. I really appreciate it.

But this time, I want to count how many ethnicity each raw_data contains. I thought it will be easier to use the clean_data to compare with raw_data. So It can generate the count easily.

Thanks,
Mark

Sorry this is still not clear to me, you are talking about "each raw_data" but you only have one, also I don't understand how you want to compare clean_data against raw_data when the former is just the count of the later.

Are you trying to do something like this?

library(dplyr)

clean_reprex <- tibble::tribble(
    ~ethnicity,    ~n,
    "African",   44L,
    "American Indian/Alaska Native",   86L,
    "Asian or Asian American",  166L,
    "Black or African American",  123L,
    "Caribbean",   12L,
    "Central American",   23L,
    "Chinese",   62L,
    "European",  196L,
    "Filipino",  107L,
    "Japanese",   41L,
    "Korean",   59L,
    "Latino/Hispanic",  182L,
    "Mexican",  147L,
    "Middle Eastern/North African",   40L,
    "Native Hawaiian",   11L,
    "Other",  131L,
    "Other Asian",   52L,
    "Other Pacific Islander",   33L,
    "Russian",   36L,
    "Samoan",    6L,
    "South American",   30L,
    "South East Asian",   28L,
    "Ukrainian",   33L,
    "Vietnamese",   93L,
    "White/ European American", 1618L,
    NA,  148L
)

clean_reprex %>% 
    mutate(proportion = n/sum(n))
#> # A tibble: 26 x 3
#>    ethnicity                         n proportion
#>    <chr>                         <int>      <dbl>
#>  1 African                          44    0.0125 
#>  2 American Indian/Alaska Native    86    0.0245 
#>  3 Asian or Asian American         166    0.0473 
#>  4 Black or African American       123    0.0351 
#>  5 Caribbean                        12    0.00342
#>  6 Central American                 23    0.00656
#>  7 Chinese                          62    0.0177 
#>  8 European                        196    0.0559 
#>  9 Filipino                        107    0.0305 
#> 10 Japanese                         41    0.0117 
#> # … with 16 more rows

Created on 2019-10-20 by the reprex package (v0.3.0.9000)

hi, andresrcs,

Sorry that I did not explain it clear.
Here is the example output I would like to learn:

tibble::tribble(
                                                    ~Ethnicity, ~American.Indian.Alaska.Native, ~White..European.American, ~Latino.Hispanic, ~Black.or.African.American,
                "[American Indian/Alaska Native] & [European]",                              1,                         1,               NA,                         NA,
                                  "[White/ European American]",                             NA,                         1,               NA,                         NA,
                     "[European] & [White/ European American]",                             NA,                         1,               NA,                         NA,
                               "[Latino/Hispanic] & [Mexican]",                             NA,                        NA,               NA,                         NA,
                                  "[White/ European American]",                             NA,                         1,               NA,                         NA,
                                  "[White/ European American]",                             NA,                         1,               NA,                         NA,
                                           "[Latino/Hispanic]",                             NA,                        NA,                1,                         NA,
                                                          "NA",                             NA,                        NA,               NA,                         NA,
                                                  "[European]",                             NA,                         1,               NA,                         NA,
                                  "[White/ European American]",                             NA,                         1,               NA,                         NA,
                                                     "[Other]",                             NA,                        NA,               NA,                         NA,
                                  "[White/ European American]",                             NA,                         1,               NA,                         NA,
                                  "[White/ European American]",                             NA,                         1,               NA,                         NA,
                                  "[White/ European American]",                             NA,                         1,               NA,                         NA,
                                  "[White/ European American]",                             NA,                         1,               NA,                         NA,
                                  "[White/ European American]",                             NA,                         1,               NA,                         NA,
                                  "[White/ European American]",                             NA,                         1,               NA,                         NA,
                                                   "[African]",                             NA,                        NA,               NA,                          1,
                        "[Latino/Hispanic] & [South American]",                             NA,                        NA,                1,                         NA,
                                 "[Black or African American]",                             NA,                        NA,               NA,                          1,
                                 "[Black or African American]",                             NA,                        NA,               NA,                          1,
                                  "[White/ European American]",                             NA,                         1,               NA,                         NA,
                                  "[White/ European American]",                             NA,                         1,               NA,                         NA,
                                  "[White/ European American]",                             NA,                         1,               NA,                         NA,
                                  "[White/ European American]",                             NA,                         1,               NA,                         NA,
                                  "[White/ European American]",                             NA,                         1,               NA,                         NA,
                                  "[White/ European American]",                             NA,                         1,               NA,                         NA,
"[American Indian/Alaska Native] & [White/ European American]",                              1,                         1,               NA,                         NA,
                                  "[White/ European American]",                             NA,                         1,               NA,                         NA,
                                                     "[Other]",                             NA,                        NA,               NA,                         NA,
               "[White/ European American] & [South American]",                             NA,                         1,                1,                         NA
)

If I understand you correctly you want to do something like this

library(tidyverse)

raw_data <- c(
    "[American Indian/Alaska Native] & [European]",
    "[White/ European American]",
    "[European] & [White/ European American]",
    "[Latino/Hispanic] & [Mexican]",
    "[White/ European American]",
    "[White/ European American]",
    "[Latino/Hispanic]",
    NA,
    "[European]",
    "[White/ European American]",
    "[Other]",
    "[White/ European American]",
    "[White/ European American]",
    "[White/ European American]",
    "[White/ European American]",
    "[White/ European American]",
    "[White/ European American]",
    "[African]",
    "[Latino/Hispanic] & [South American]",
    "[Black or African American]",
    "[Black or African American]",
    "[White/ European American]",
    "[White/ European American]",
    "[White/ European American]",
    "[White/ European American]",
    "[White/ European American]",
    "[White/ European American]",
    "[American Indian/Alaska Native] & [White/ European American]",
    "[White/ European American]",
    "[Other]",
    "[White/ European American] & [South American]",
    "[White/ European American]",
    "[Korean] & [White/ European American]",
    "[White/ European American]",
    "[European]",
    "[European]",
    "[White/ European American]",
    "[Vietnamese]",
    "[Filipino]",
    "[White/ European American]",
    "[Filipino] & [Chinese]",
    "[White/ European American]",
    "[White/ European American]",
    "[White/ European American]",
    "[Mexican]",
    "[European] & [White/ European American]",
    "[White/ European American]",
    "[Mexican]",
    "[White/ European American]",
    "[Filipino] & [White/ European American]",
    "[White/ European American]",
    "[Asian or Asian American]",
    "[White/ European American]",
    "[Middle Eastern/North African]",
    "[Other Asian]",
    "[White/ European American]",
    "[American Indian/Alaska Native]",
    "[Black or African American]",
    "[European]",
    "[White/ European American]",
    "[White/ European American]",
    "[Other Asian]",
    "[White/ European American]",
    "[White/ European American]",
    "[Black or African American] & [Caribbean]",
    "[White/ European American]",
    "[European]",
    "[White/ European American]",
    "[European] & [White/ European American]",
    "[Other Pacific Islander]",
    "[Black or African American] & [White/ European American]",
    "[White/ European American]",
    "[White/ European American]",
    "[White/ European American]",
    "[White/ European American]",
    "[Other]",
    "[White/ European American]",
    "[American Indian/Alaska Native]",
    "[White/ European American]",
    "[White/ European American]",
    "[White/ European American]",
    "[White/ European American]",
    "[White/ European American]",
    "[White/ European American]",
    "[Black or African American]",
    "[White/ European American]",
    "[Other Pacific Islander] & [Ukrainian] & [White/ European American]",
    "[White/ European American]",
    NA,
    "[White/ European American]",
    "[White/ European American]",
    "[White/ European American]",
    "[Other]",
    "[White/ European American]",
    "[European] & [White/ European American]",
    "[White/ European American]",
    "[White/ European American]",
    "[White/ European American]",
    "[White/ European American] & [Latino/Hispanic]"
)

ethnicities <- str_split(raw_data, pattern = "\\s&\\s") %>% 
    unlist() %>% 
    unique() %>%
    paste() %>% 
    set_names()

tibble(ethnicity = raw_data) %>% 
    bind_cols(map_dfc(ethnicities, ~ as.numeric(str_detect(paste(raw_data), fixed(.x)))))
#> # A tibble: 99 x 21
#>    ethnicity `[American Indi… `[European]` `[White/ Europe…
#>    <chr>                <dbl>        <dbl>            <dbl>
#>  1 [America…                1            1                0
#>  2 [White/ …                0            0                1
#>  3 [Europea…                0            1                1
#>  4 [Latino/…                0            0                0
#>  5 [White/ …                0            0                1
#>  6 [White/ …                0            0                1
#>  7 [Latino/…                0            0                0
#>  8 <NA>                     0            0                0
#>  9 [Europea…                0            1                0
#> 10 [White/ …                0            0                1
#> # … with 89 more rows, and 17 more variables: `[Latino/Hispanic]` <dbl>,
#> #   `[Mexican]` <dbl>, `NA` <dbl>, `[Other]` <dbl>, `[African]` <dbl>,
#> #   `[South American]` <dbl>, `[Black or African American]` <dbl>,
#> #   `[Korean]` <dbl>, `[Vietnamese]` <dbl>, `[Filipino]` <dbl>,
#> #   `[Chinese]` <dbl>, `[Asian or Asian American]` <dbl>, `[Middle
#> #   Eastern/North African]` <dbl>, `[Other Asian]` <dbl>,
#> #   `[Caribbean]` <dbl>, `[Other Pacific Islander]` <dbl>,
#> #   `[Ukrainian]` <dbl>

Although, if your final goal for this is to count how many ethnicities there are per row, then you could simply do this

tibble(ethnicity = raw_data) %>% 
    mutate(count = str_count(raw_data, "\\["))
#> # A tibble: 99 x 2
#>    ethnicity                                    count
#>    <chr>                                        <int>
#>  1 [American Indian/Alaska Native] & [European]     2
#>  2 [White/ European American]                       1
#>  3 [European] & [White/ European American]          2
#>  4 [Latino/Hispanic] & [Mexican]                    2
#>  5 [White/ European American]                       1
#>  6 [White/ European American]                       1
#>  7 [Latino/Hispanic]                                1
#>  8 <NA>                                            NA
#>  9 [European]                                       1
#> 10 [White/ European American]                       1
#> # … with 89 more rows
1 Like

this is also correct. however, I was hoping to generate the column for each ethnicity. so I can provide a better analysis on each ethnicity. That's why I come out with a confusing question at the beginning.

I think the first solution on my previous post produces exactly that. If that is not what you are looking for, then I give up, I honestly don't understand what you are asking.

andresrcs, I appreciate your help.
I still learn a lot.
It is my fault that I am not able to explain it well.

maybe I will use this illustration:
x(contains following strings):
a/b/c
b/s/e
a/c

My hope is write a function can generate:
x ...............a ..............b..............c................e.................s
a/b/c .........1...............1..............1.....................................
b/s/e...........................1.................................1.................1
a/c.............1...............................1.....................................

similar concept to dummy variable in Economics.

Thank you a lot.
Mark

I'm even more confused, that is exactly the output of the code I already gave you, could you explain what the difference is?

2 Likes

My bad. I finally understand what you mean. I'm sorry.
I didn't pull down your data. my bad.

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.