如果其他列中的两个单元格满足某些条件,我想将数据帧中的单元格值增加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)
会起作用,但事实并非如此。
有关优雅解决方案的任何想法吗?
答案 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
等于A
且y
等于C
,我们应该将z
增加一个:
dd$z = dd$z + (dd$x == "A" & dd$y== "C")
关键部分是:
(dd$x == "A" & dd$y== "C")
这是一个逻辑比较,返回TRUE
(1)或FALSE
(0)。