如何计算 R 中两列的匹配值?

How to count matching values from both columns in R?

我不知道该怎么做,而且我似乎找不到答案,因此非常感谢您的帮助。我想要做的是计算某些匹配值,例如,如果 x 列有一个 b 并且 y 列有一个 a 它被计为 one/matches 并且它完成直到最后一行。

df <- data.frame(x = c("b","c","a","d","f","b","c","b"), y = c("a","b","c","a","d","a","f","a"))
> df
  x y
1 b a
2 c b
3 a c
4 d a
5 f d
6 b a
7 c f
8 b a

我试过的是这样的:

b <- x == "b"
a <- y == "a"
b[a]

我假设 b 会找到任何包含 a 的行,如果这有意义的话。

使用 "and" 运算符 & 组合逻辑条件以指示它们何时都为真,并使用 sum() 计算逻辑条件为真的次数。我想你想要

sum(df$x == "b" & df$y == "a")
# [1] 3

请注意,这与您的语言非常吻合。您说“x 有一个 "b" 并且列 y 有一个 "a"”。

# x has a "b"  and  y has an "a"
  x == "b"      &    y == "a"

如果您想查看 x 有多少次 "b" y 有多少次,您可以使用 "or" 运算符 | "a".

如果数据不是很大,你可以一次计算所有的东西,然后使用下标:

df1 <- table(df)


df1["b", "a"]#for x=="b"  and  y=="a"
[1] 3
df1["a", "b"]#for x=="a"  and  y=="b"
[1] 0

我们可以使用tidyverse

library(dplyr)
df1 %>%
   summarise(new = sum(x == 'b'  & y == 'a'))