在我的数据框中,我想通过将DiscVar
变量乘以数字1400
,{{1来计算产品(帽子,鞋子或伞)的成本}}或(1400-342)
)取决于产品。
计算仅适用于第一次操作的问题,即(1400+500)
,我不明白为什么。
感谢您的帮助!!
dfq$DiscVar * 1400
答案 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)