【发布时间】:2019-06-06 14:04:41
【问题描述】:
我有一些许可证数据,并试图在我的数据框中创建一个列,根据某人注册的计划告诉我列出的许可证是否可接受。
为了做到这一点,我创建了一个列表,因为一些许可证可以用于多个程序。理想情况下,我的想法是,我可以以某种方式使用此列表作为参考,以查看该程序是否列在许可证名称下。我也尝试过 case_when,但一直出错。我还希望有一个可以用作一种地图的列表,因为许可证名称可能每年都会发生变化。
示例代码
以下是我的数据框的摘录:
df1 <- data.frame(Program = c("Elementary Education", "Elementary Education", "Secondary Math", "Secondary Math", "Secondary ELA", "Secondary ELA"), Licensure = c("Content Area - Elementary Education (Grades 1-6)", "Content Area - Secondary Math (Grades 7-12)", "Content Area - Secondary Math (Grades 7-12)", "Mathematics (Grades 7-12) 1706", "Content Area - Secondary ELA (Grades 7-12)", "Content Area - Early Childhood (preK-Grade 3)"))
这是我创建的列表,其中包括所有许可证以及每个许可证下的可接受程序:
license_index <- list(
"Content Area - Early Childhood (preK-Grade 3)" = "Elementary Education",
"Content Area - Elementary Education (Grades 1-6)" = "Elementary Education",
"Content Area - Middle Grades ELA (Grades 4-9)" = c("Elementary Education", "Secondary ELA"),
"Content Area - Middle Grades Math (Grades 4-9)" = c("Elementary Education", "Secondary Math"),
"Content Area - Middle School Mathematics (Grades 4-8)" = "Elementary Education",
"Content Area - Secondary ELA (Grades 7-12)" = "Secondary ELA",
"Content Area - Secondary Math (Grades 7-12)" = "Secondary Math",
"Content Area - Secondary English (Grades 7-12)" = "Secondary ELA",
"English Language Arts and Reading (Grades 4-8) 864" = "Elementary Education",
"Core Subjects (Grades EC-6) 1770" = "Elementary Education",
"English Language Arts and Reading (Grades 7-12) 1709" = "Secondary ELA",
"Mathematics (Grades 4-8) 866" = "Elementary Education",
"Mathematics (Grades 7-12) 1706" = "Secondary Math"
)
作为最后的专栏,我最希望的是许可证和程序是否匹配:
ideal.df <- data.frame(Program = c("Elementary Education", "Elementary Education", "Secondary Math", "Secondary Math", "Secondary ELA", "Secondary ELA"), Licensure = c("Content Area - Elementary Education (Grades 1-6)", "Content Area - Secondary Math (Grades 7-12)", "Content Area - Secondary Math (Grades 7-12)", "Mathematics (Grades 7-12) 1706", "Content Area - Secondary ELA (Grades 7-12)", "Content Area - Early Childhood (preK-Grade 3)"), match = c("Match", "No", "Match", "Match", "Match", "No"))
我想我需要 mutate 函数,也许需要使用 purrr map 函数,但我对 tidyverse 不是很熟悉,非常感谢帮助!提前致谢!
【问题讨论】:
标签: r dictionary dplyr