(365.0, 736.0)
我正在尝试创建一个新的变量,该变量将两列之间的差值加以匹配,除非它们匹配,并且如果它们匹配,则它将返回两列所具有的值。
(414.0, 736.0)
这是我尝试过的方法,但是它给我一个错误,我缺少TRUE / FALSE参数或类似的东西。
viewWillTransition
谢谢!
答案 0 :(得分:3)
我们可以使用ifelse
代替if/else
,因为if/else
没有被向量化并且期望向量的长度为1。这里,行数大于1,因此请使用向量化ifelse
或if_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))