【发布时间】:2020-03-05 22:22:27
【问题描述】:
我正在尝试根据对许多其他变量的条件评估来创建一个新变量。我正在使用一些嵌套的“if_else”语句,但只有部分条件语句正在按照我的意愿进行评估。
这是一些示例数据的 dput:
structure(list(`Cultivation` = c("No", "No", "Yes",
"Yes", "No", "Yes", "No", "No", "No", "No", "Yes", "Yes"),
`Processing` = c("No",
"No", "Yes", "Yes", "No", "No", "No", "No", "No", "No", "No",
"Yes"), `Federal Sales` = c("No", "No", "Yes", "Yes", "Yes",
"Yes", "No", "No", "No", "No", "Yes", "Yes"), `Cultivation
Type` = c(NA,
NA, "Standard", "Standard", NA, "Micro", NA, NA, NA, NA, "Nursery",
"Standard"), `Processing Type` = c(NA, NA, "Standard",
"Standard", NA, NA, NA, NA, NA, NA, NA, "Standard"), `Type` = c(NA,
NA, "Standard", "Standard", NA, "Micro", NA, NA, NA, NA, NA,
"Standard")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-12L))
这是我正在使用的代码:
DF.2 <- DF.1 %>%
dplyr::mutate("Type" = if_else(str_detect(tolower(`Cultivation Type`),
"micro") |
str_detect(tolower(`Processing Type`), "micro"), "Micro",
if_else(str_detect(tolower(`Cultivation Type`), "standard") |
str_detect(tolower(`Processing Type`), "standard"), "Standard",
if_else(str_detect(tolower(`Cultivation Type`), "nursery"),
"Nursery","Other"))))
前两个条件得到满足,我得到一个“标准”或“微型”的类型变量,但“nursery”和“其他”没有评估,我得到“NA”。
【问题讨论】:
-
该列中有
NA,需要注意 -
如果有很多值要替换,一个选项将是一个键/值数据集,然后做一个模糊连接
-
我认为 NA 可能是我的问题的原因。您知道为什么第 6 行可以正确评估 Micro,因为其中一列也包含“NA”?另外,有没有办法在嵌套的 if_else 语句中处理 NA?
标签: r if-statement dplyr