【问题标题】:Count number of rows that contain same value?计算包含相同值的行数?
【发布时间】:2023-03-18 04:20:01
【问题描述】:

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

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

【问题讨论】:

  • 长度(which(df$a==df$b))
  • 甚至sum(df$a == df$b)
  • @CalumYou 如果存在“NA”值,您的将失败!偷偷摸摸 na.rm=TRUE ;)
  • 如果两列都是NA,你想做什么?
  • @TonyHellmuth,你也是:length(which(NA==NA))。

标签: r


【解决方案1】:

像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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 2023-03-21
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    相关资源
    最近更新 更多