如何在 R 中读取每一行以确定某个单元格的值

问题描述 投票:0回答:1

我的数据框如下所示:

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 新手,所以我真的不知道从哪里开始

r for-loop if-statement
1个回答
0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.