使用mutate和ifelse进行条件赋值

时间:2018-06-08 16:58:10

标签: r dplyr mutate

有了这种数据(见下文),我尝试基于mutate()的条件测试创建一个新列IRISCOM

COMMUNE|IRIS|NB
35360|353600101|45
35361|ZZZZZZ|72

我尝试了data=mutate(data, IRISCOM= ifelse(IRIS == "ZZZZZZZZZ", COMMUNE, IRIS))

它正确写入了COMMUNE,但是按预期编写1代替IRIS代码。

我尝试了一些没有成功的实验。

1 个答案:

答案 0 :(得分:1)

要解决factor问题(请参阅上面的评论),我们可以执行以下操作

library(tidyverse)
data %>%
    mutate_if(is.factor, as.character) %>%
    mutate(IRISCOM = ifelse(IRIS == "ZZZZZZ", COMMUNE, IRIS))
#  COMMUNE      IRIS NB   IRISCOM
#1   35360 353600101 45 353600101
#2   35361    ZZZZZZ 72     35361

样本数据

data <- read.table(text =
    "COMMUNE|IRIS|NB
35360|353600101|45
35361|ZZZZZZ|72", header = T, sep = "|")