除非变量匹配,否则要区别变量以创建新变量

时间:2018-10-07 03:02:17

标签: r dataframe dplyr

(365.0, 736.0)

我正在尝试创建一个新的变量,该变量将两列之间的差值加以匹配,除非它们匹配,并且如果它们匹配,则它将返回两列所具有的值。

(414.0, 736.0)

这是我尝试过的方法,但是它给我一个错误,我缺少TRUE / FALSE参数或类似的东西。

viewWillTransition

谢谢!

1 个答案:

答案 0 :(得分:3)

我们可以使用ifelse代替if/else,因为if/else没有被向量化并且期望向量的长度为1。这里,行数大于1,因此请使用向量化ifelseif_else(来自dplyr,它也会检查type)或case_when

test$NewVar <- with(test, ifelse(cost == price, price, cost - price))
test$NewVar
#[1] 120 -17  -8   4   7 106 170  43 -55 -37 -53 -30

或使用dplyr

library(dplyr)
test %>%
     mutate(NewVar = ifelse(cost == price, price, cost - price))

或带有case_when

test %>%
     mutate(NewVar = case_when(cost == price ~ price,
                      TRUE ~ cost -price))