如何计算 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'))
我不知道该怎么做,而且我似乎找不到答案,因此非常感谢您的帮助。我想要做的是计算某些匹配值,例如,如果 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'))