2013-06-27 99 views
0

如果其他列中的兩個單元格滿足特定條件,我想將數據框中單元格的值增加1。我怎麼做?R:根據兩個條件更改單元格的值

這是我如何做到這一點的一個條件:

`+`(data.frame[which(data.frame$col1 == some.value),]$col2 , 1) 

我希望

`+`(data.frame[which(data.frame$col1 == some.value && data.frame$col3 == some.other.value),]$col2 , 1) 

會的工作,但事實並非如此。

一個優雅的解決方案的任何想法?

回答

0

先創建一些數據一起玩:

set.seed(1) 
L = c("A", "B", "C") 
dd = data.frame(x = sample(L, 10, TRUE), y = sample(L, 10, TRUE), z = 0) 

所以dd與三列的數據幀:

R> head(dd) 
    x y z 
1 A A 0 
2 B A 0 
3 B C 0 
4 C B 0 
5 A C 0 
6 C B 0 

在下面的例子中,如果列x等於Ay等於C我們應該增加一個:

dd$z = dd$z + (dd$x == "A" & dd$y== "C") 

的關鍵部分是:

(dd$x == "A" & dd$y== "C") 

這是一個邏輯比較,並返回TRUE(1)或FALSE(0)。

+0

哇,這是一個非常優雅的解決方案!謝謝!!! – nantoku

相關問題