0

如果其他列中的两个单元格满足某些条件,我想将数据框中的单元格的值增加 1。我怎么做?

这就是我在一种情况下的做法:

`+`(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)

会工作,但它不会。

任何关于优雅解决方案的想法?

4

1 回答 1

2

首先创建一些数据来玩:

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

在下面的例子中,如果 column xequalsAyequalsC我们应该加z一:

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

关键部分是:

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

这是一个逻辑比较并返回TRUE(1) 或FALSE(0)。

于 2013-06-27T08:28:20.913 回答