首页 > 解决方案 > 计算包含相同值的行数?

问题描述

假设我有一个包含两列“a”和“b”的数据框。我想计算给定行的两列包含相同值的行数。

例如,如果“a”列的第 1 行包含“blue”,如果“b”列的第 1 行包含“blue”,则将计为 1。

标签: r

解决方案


假设数据中没有,那么简单的事情sum(df$a == df$b)就会给你正确的答案。NA

如果你想安全,你可以使用这样的东西:

`%==%` <- function(a,b) {
  ana <- is.na(a)
  bna <- is.na(b)
  (ana & bna) | (!ana & !bna & a==b)
}
x1 <- c(1,2,NA,4)
x2 <- c(2,2,NA,NA)
x1 %==% x2
# [1] FALSE  TRUE  TRUE FALSE
sum(x1 %==% x2)
# [1] 2

推荐阅读