条件算术运算错误消息

时间:2018-06-16 19:21:38

标签: r arithmetic-expressions

在我的数据框中,我想通过将DiscVar变量乘以数字1400,{{1来计算产品(帽子,鞋子或伞)的成本}}或(1400-342))取决于产品。

计算仅适用于第一次操作的问题,即(1400+500),我不明白为什么。

感谢您的帮助!!

dfq$DiscVar * 1400

2 个答案:

答案 0 :(得分:2)

您对结果进行了子集,但忘记对操作数进行子集化。

dfq <- data.frame(ObjVar=c("hat","hat","shoe","shoe","umbrella"),DiscVar=c(0.19,0.39,0.18,1.00,0.64))

dfq$CostVar <- 0    # First, create the entire new column
dfq$CostVar[dfq$ObjVar == "hat"] <- dfq$DiscVar[dfq$ObjVar == "hat"] * 1400
dfq$CostVar[dfq$ObjVar == "shoe"] <- dfq$DiscVar[dfq$ObjVar == "shoe"] * (1400-342)
dfq$CostVar[dfq$ObjVar == "umbrella"] <- dfq$DiscVar[dfq$ObjVar == "umbrella"] * (1400+500)

答案 1 :(得分:0)

如果有许多独特元素,我们可以创建一个名为vector以匹配&#39; ObjVar&#39;中的元素,然后进行算术

nm1 <- setNames(c(1400, 1400-342, 1400 + 500), c('hat', 'shoe', 'umbrella'))
dfq$CostVar <- with(dfq, nm1[ObjVar] * DiscVar)