簡體   English   中英

將+1添加到具有R條件的列

[英]add +1 to a column with condition in R

我有一個名為barometre2013的數據框,其中包含名為q0qc的列,其中包含以下數字:

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

我想將+1添加到> = 10的數字中,所以結果應該是這樣的:

[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

我該怎么辦?

非常感謝。

執行時:

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 ,它對第一個參數進行條件測試,並ifelse返回第二個或第三個參數:

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

dash2建議的第三種方法是僅修改那些滿足條件的值。 請注意,此方法要求在賦值的兩邊都具有“ test vector”(這就是dash2糾正了前面的注釋的原因:

barometre2013$q0qc[barometre2013$q0qc>=10] <- 
                      barometre2013$q0qc[barometre2013$q0qc>=10]+ 1
    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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM