2015-10-14 43 views
0

我試圖找到一種快速方法來將IF語句應用於R中的整個列,以根據語句創建1和0的新列。具體來說,我想計算雨天> 0爲天數(1)的天數和天數爲0的天數(0天)。我的數據採用以下格式:將IF語句應用到R中的整個列中

Day Month Year Rainfall 

1  1  1961 2.5 

2  1  1961  0 

3  1  1961 3.1 

4  1  1961  0 

我創建了一個循環,如下所示:

for (i in df$Rainfall){ 

WD=data.frame(ifelse(df$Rainfall>0,1,0) 

} 

這工作,但速度很慢。有更快的方法嗎?

非常感謝。

+2

有沒有必要明確地對循環這裏,因爲'ifelse' itselsf被矢量(可應用於向量) –

+0

非常感謝您對此進行了清理 - 儘管我需要遍歷整個列,但我現在明白了爲什麼ifelse可以在沒有循環的情況下工作。感謝您的幫助。 –

回答

4

我們可以用+包裝成邏輯條件來脅迫二進制向量。它會很快。

+(df$Rainfall >0) 

或者,如果我們使用ifelse,沒有需要循環,因爲它是矢量

ifelse(df$Rainfall > 0, 1, 0)