嵌套if函数

时间:2018-02-06 13:13:00

标签: r if-statement nested

我有树列,我想根据以下条件计算一个新变量(“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 {
        }
      }
    }
  }
}

1 个答案:

答案 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]))