dplyr mutate问题案例

时间:2018-06-21 13:07:01

标签: r dplyr

我有以下数据:

d <- data.frame(
        ID= c("NULL", "NULL", "1232", "4565", "4321"))

我试图创建一个新行,当ID为NULL时显示“丢失”,而当ID不为NULL时显示“不丢失”。我有以下代码:

d %>%
mutate(ID_missing= case_when(ID=="NULL") ~ "missing", 
                           ID!="NULL" ~ "not missing", TRUE ~ NA_real_) -> d

但是我遇到以下错误:

Error in mutate_impl(.data, dots) : 
Column `name_of` is of unsupported type quoted call

我看不到任何指导,也看不到我的代码可能有什么问题。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您的方法有两个问题:

1)括号

您使用case_when的方法是不正确的,因为该函数中间的括号是闭合的。应该是

case_when(ID=="NULL" ~ "missing", 
          ID!="NULL" ~ "not missing", 
          TRUE       ~ NA_real_))

2)不正确的NA类型

您在字符列中使用NA_real_。您需要改用NA_character_

最终将是:

d %>%
    mutate(ID_missing= case_when(ID=="NULL" ~ "missing", 
           ID!="NULL" ~ "not missing", TRUE ~ NA_character_)) -> d

#     ID  ID_missing
# 1 NULL     missing
# 2 NULL     missing
# 3 1232 not missing
# 4 4565 not missing
# 5 4321 not missing

答案 1 :(得分:0)

下面将起作用。

require(dplyr)
d <- data.frame(
ID= c("NULL", "NULL", "1232", "4565", "4321"))

#### USE mutate and ifelse 

d <- d %>% mutate(ID_missing = ifelse(ID == "NULL","missing","not_missing"))