2013-06-27 102 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

相关问题