在条件为R的列中添加+1

时间:2018-05-02 21:03:41

标签: r conditional-statements add

我有一个名为barometre2013的数据框,其中包含一个名为q0qc的列,其中包含以下数字:

[1] 15  1  9 15 9  3  6  3  3  6  6 10 15  6 15 10

我想为> = 10的数字添加+1,因此结果应为:

[1] 16  1  9 16 9  3  6  3  3  6  6 11 16  6 16 11  

我试过这段代码:

if (barometre2013$q0qc > 9) {
  barometre2013$q0qc <- barometre2013$q0qc + 1
}

但是这会在不考虑条件的情况下为所有数字添加+1:

[1] 16  2  10 16 10  4  7  4  4  7  7 11 16  7 16 11

我怎样才能做我想做的事?

非常感谢。

2 个答案:

答案 0 :(得分:1)

执行时:

if (barometre2013$q0qc > 9) {
  barometre2013$q0qc <- barometre2013$q0qc + 1
}

...你应该看到一个关于“只评估第一个值”的警告。 barometre2013$q0qc中的第一个值是15,因为它是TRUE,那么该赋值是在整个向量上完成的。 ifelse或布尔逻辑是条件评估和/或分配的注释中建议的方法。第一个:

barometre2013$q0qc <- barometre2013$q0qc + (barometre2013$q0qc >= 10) 

...在起始向量中添加了1和0的向量;如果满足逻辑表达式,则为1,否则为0。如果你想添加一个以外的东西(数值为TRUE),你可以将第二个项乘以所需的增量或减量。

另一种方法是使用ifelse对其第一个参数进行条件测试,在逐个项目的基础上返回第二个或第三个参数:

barometre2013$q0qc <- barometre2013$q0qc + ifelse(barometre2013$q0qc >= 10, 1, 0)

dash2建议的第三种方法是仅修改满足条件的那些值。请注意,此方法需要在赋值的两侧都有“测试向量”(这就是为什么dash2正在纠正之前的注释:

barometre2013$q0qc[barometre2013$q0qc>=10] <- 
                      barometre2013$q0qc[barometre2013$q0qc>=10]+ 1

答案 1 :(得分:-5)

    data <- c(15,1,9,15,9,3,6,3,3,6,6,10,15,6,15,10)

    data2 <- 

    as.numeric( 
      for(i in data){
      if(i >= 10){ i = i +1 }
      print(i)
      }
    )

class(data)
class(data2)