R:根据两个条件改变单元格的值

时间:2013-06-27 08:24:08

标签: r dataframe

如果其他列中的两个单元格满足某些条件,我想将数据帧中的单元格值增加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)

会起作用,但事实并非如此。

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

1 个答案:

答案 0 :(得分:1)

首先创建一些数据:

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,我们应该将z增加一个:

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

关键部分是:

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

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