我有树列,我想根据以下条件计算一个新变量(“tot.price”)作为这三个变量的乘法:
A)如果V1 == 1,则将值1置于新值“tot.price”
中B)如果V1 == 2则将权重乘以0.25并将V2 * V3乘以新值“tot.price”
C)如果V1 == 3则将权重乘以0.5并将V2 * V3乘以新值“tot.price”
D)如果V1 == 4则将权重乘以0.75并乘以新值“tot.price”中的V2 * V3
E)如果V1 == 5则将权重乘以1并将V2 * V3乘以新值“tot.price”
我在下面构建了代码,但是它给了我警告“条件长度> 1且只使用第一个元素”。 有什么帮助吗?
if (data$V1 == "1") {
tot.price <- 1
} else {
if (data$V1 == "2") {
tot.price <- 0.25 * data$V2 * data$V3
} else {
if (data$V1 == "3") {
tot.price <- 0.5 * data$V2 * data$V3
} else {
if (data$V1 == "4") {
tot.price <- 0.75 * data$sub1_likelihood * data$sub1_severeness
} else {
if (data$V1 == "5") {
tot.price <- data$V2 * data$V3
} else {
}
}
}
}
}
答案 0 :(得分:-1)
您确定要使用嵌套ifs吗?怎么样:
ref=data.frame(a=seq(1:5),b=as.character(seq(1:5)))
df=data.frame(V1=as.integer(runif(20,1,6)))
df$tot.price=unlist(sapply(df$V1, function(x) ref[(abs(ref$a-x)<0.001),2]))