【发布时间】:2023-03-28 05:39:01
【问题描述】:
我想从数据框中替换一个列名,以便我可以更新该列中的值。但是,如果有人可以告诉我如何做到这一点,我愿意接受其他更好的方法来做到这一点。
查找以 Org 开头并以 Type 结尾的列名。有时不同来源的数据框可能有不同的列名。另外,最好让它不区分大小写**
org_type_col <- names(assessment) %>% str_subset("(Org)(.*)(Type)")
assessment <- assessment %>% setNames(org_type_col = "OrgType")
但这是我遇到错误的地方。我得到的错误是这样的:
Error in setNames(., org_type_col = "OrgType") : unused argument (org_type_col = "OrgType")
我想重命名该列,以便执行以下操作:
### Organization Type
assessment <- assessment %>%
add_column(OrganizationType = case_when(
(str_detect(.$OrgType, "Health")) ~ "Healthcare",
(str_detect(.$OrgType, "Pharmaceuticals")) ~ "Pharmaceuticals",
(str_detect(.$OrgType, "Banking|Financial|Insurance")) ~ "Financial Services",
(str_detect(.$OrgType, "Computer|Telecommunication")) ~ "High-Tech",
(str_detect(.$OrgType, "Energy|Utilities")) ~ "Energy",
(str_detect(.$OrgType, "Education")) ~ "Education",
(str_detect(.$OrgType, "Government")) ~ "Government")) %>%
replace_na(list(OrgType = "Unknown"))
有没有更简单更好的方法来将它们全部结合起来?
【问题讨论】:
-
如果您使用
dplyr,请使用rename而不是setNames。 (setNames是一个基本函数,它希望您提供所有名称,而不仅仅是一个替换)。