Reputation: 4328
I have a dataframe of companies and a separate dataframe with the categories I want to assess each of those companies by; what I want to do is add my dataframe of categories as a column of dataframes to company data and then unnest()
that column. In the end I want to make an excel/csv file that my team can use to track how the companies are assessed.
Here's my data:
companies <- tibble(company = c("company_a", "company_b", "company_c"))
# and here's the structure for my assessment criteria
structure(list(id = c(NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_), evaluator = c(NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_), subawardee_name = c(NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_),
category = c("category_1", "category_1", "category_1", "category_1",
"category_1", "category_2", "category_2", "category_2", "category_2",
"category_2", "category_3", "category_3", "category_3", "category_3",
"category_3", "category_4", "category_4", "category_4", "category_4",
"category_4"), level = c("Ownership", "Leadership", "Employees",
"Operations", "Product", "Ownership", "Leadership", "Employees",
"Operations", "Product", "Ownership", "Leadership", "Employees",
"Operations", "Product", "Ownership", "Leadership", "Employees",
"Operations", "Product"), rating = c(NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_), excerpt = c(NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_), source = c(NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -20L))
So I want to join this dataframe as a single row to each company. I've tried this, which hasn't worked:
companies %>%
group_by(company) %>%
mutate(data = assessment_criteria)
Error: Column `data` is of unsupported class data.frame
I've also tried various joins with combinations of map_df
and map2_df
. Any thoughts here?
Upvotes: 1
Views: 63
Reputation: 5956
You just instead need to provide the data frames in list format.
library(dplyr)
companies_nest <- companies %>%
mutate(data = list(other_data))
companies_nest
#> # A tibble: 3 x 2
#> company data
#> <chr> <list>
#> 1 company_a <tibble [20 x 8]>
#> 2 company_b <tibble [20 x 8]>
#> 3 company_c <tibble [20 x 8]>
You can then unnest as necessary.
library(tidyr)
companies_nest %>%
unnest(cols = c(data))
#> # A tibble: 60 x 9
#> company id evaluator subawardee_name category level rating excerpt source
#> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 company~ <NA> <NA> <NA> categor~ Owne~ <NA> <NA> <NA>
#> 2 company~ <NA> <NA> <NA> categor~ Lead~ <NA> <NA> <NA>
#> 3 company~ <NA> <NA> <NA> categor~ Empl~ <NA> <NA> <NA>
#> 4 company~ <NA> <NA> <NA> categor~ Oper~ <NA> <NA> <NA>
#> 5 company~ <NA> <NA> <NA> categor~ Prod~ <NA> <NA> <NA>
#> 6 company~ <NA> <NA> <NA> categor~ Owne~ <NA> <NA> <NA>
#> 7 company~ <NA> <NA> <NA> categor~ Lead~ <NA> <NA> <NA>
#> 8 company~ <NA> <NA> <NA> categor~ Empl~ <NA> <NA> <NA>
#> 9 company~ <NA> <NA> <NA> categor~ Oper~ <NA> <NA> <NA>
#> 10 company~ <NA> <NA> <NA> categor~ Prod~ <NA> <NA> <NA>
#> # ... with 50 more rows
Data
companies <- tibble(company = c("company_a", "company_b", "company_c"))
other_data <- structure(list(id = c(NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_), evaluator = c(NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_), subawardee_name = c(NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_),
category = c("category_1", "category_1", "category_1", "category_1",
"category_1", "category_2", "category_2", "category_2", "category_2",
"category_2", "category_3", "category_3", "category_3", "category_3",
"category_3", "category_4", "category_4", "category_4", "category_4",
"category_4"), level = c("Ownership", "Leadership", "Employees",
"Operations", "Product", "Ownership", "Leadership", "Employees",
"Operations", "Product", "Ownership", "Leadership", "Employees",
"Operations", "Product", "Ownership", "Leadership", "Employees",
"Operations", "Product"), rating = c(NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_), excerpt = c(NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_), source = c(NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -20L))
Upvotes: 2