[英]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.