我的数据框如下所示:
code = c("BIOL", "HIST","ECON","ANTH","FREN","MGMT")
Room = c("A", "B", "A","B","C","C")
df <- data.frame(code, Room)
我有以下三个列表:
Sci_codes = c("BIOL", "ANTH", "FREN")
art_codes = c("Hist", "MYTH")
bussiness_codes = c("ECON", "MGMT")
我想根据“代码”列中的值创建一个名为“教师”的新列。如果在 Sci_codes 列表中找到代码中的字符串,我希望它返回“Sci”。如果在 art_codes 列表中找到代码列中的值,我希望它返回“Art”。最后,如果在 business_codes 列表中找到代码列中的值,我希望它返回“Bussiness”。
所以理论上我的数据框会是这样的
df <- data.frame(code = c("BIOL", "HIST","ECON","ANTH","FREN","MGMT"),
Room = c("A", "B", "A","B","C","C"),
faculty = c("Sci", "Art", "Bussiness", "Sci", "Sci", "Bussiness"))
我是 R 新手,所以我真的不知道从哪里开始
dplyr::case_when
在这里可能有用。
df$faculty = dplyr::case_when(
df$code %in% Sci_codes ~ "Sci",
df$code %in% art_codes ~ "Art",
df$code %in% bussiness_codes ~ "Business"
)
如果我们使用了
art_codes = c("HIST", "MYTH")
我们会得到:
code Room faculty
1 BIOL A Sci
2 HIST B Art
3 ECON A Business
4 ANTH B Sci
5 FREN C Sci
6 MGMT C Business