首页 > 解决方案 > 条件算术运算错误信息

问题描述

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

计算仅适用于第一次操作的问题,即dfq$DiscVar * 1400,我不知道为什么。

谢谢你的帮助!!

# Data & arithmetic operation  
dfq <- data.frame(ObjVar=c("hat","hat","shoe","shoe","umbrella"),DiscVar=c(0.19,0.39,0.18,1.00,0.64))
dfq$CostVar[dfq$ObjVar == "hat"] <- dfq$DiscVar * 1400
dfq$CostVar[dfq$ObjVar == "shoe"] <- dfq$DiscVar * (1400-342)
dfq$CostVar[dfq$ObjVar == "umbrella"] <- dfq$DiscVar * (1400+500)

标签: rarithmetic-expressions

解决方案


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

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)

推荐阅读