在一列中查找与另一列中的不同值相对应的重复值
Find reoccuring values in one column that correspond to differing values in another column
我有一个包含两列的数据框。第一列(“A”)包含数字,第二列(“B”)包含字母:
A B
1 a
1 a
1 a
2 b
2 c
3 d
4 e
4 e
5 f
5 g
5 g
5 h
大多数数字总是与相同的字母匹配(例如“1”总是与“a”匹配),但有些数字与不同的字母匹配(例如“2”与“b”和“c”匹配”)。我想找到与多个字母匹配的数字。例如,结果应该是一个包含“2”和“5”的向量。
示例数据:
example <- read.table(textConnection('
A B
1 a
1 a
1 a
2 b
2 c
3 d
4 e
4 e
5 f
5 g
5 g
5 h
'), header = TRUE, colClasses=c("double", "character"))
library(tidyverse)
> distinct(example) %>% group_by(A) %>%
+ summarize(count = n()) %>%
+ filter(count > 1)
# A tibble: 2 x 2
A count
<dbl> <int>
1 2 2
2 5 3
另一种可能的解决方案,在base R
中:
as.numeric(names(which(apply(table(example$A, example$B), 1,
\(x) sum(x == 0) != (length(x)-1)))))
#> [1] 2 5
与@Paul 相同但没有应用功能
names(which(rowSums(table(example$A, example$B) != 0) > 1))
-output
>
[1] "2" "5"
我有一个包含两列的数据框。第一列(“A”)包含数字,第二列(“B”)包含字母:
A B
1 a
1 a
1 a
2 b
2 c
3 d
4 e
4 e
5 f
5 g
5 g
5 h
大多数数字总是与相同的字母匹配(例如“1”总是与“a”匹配),但有些数字与不同的字母匹配(例如“2”与“b”和“c”匹配”)。我想找到与多个字母匹配的数字。例如,结果应该是一个包含“2”和“5”的向量。
示例数据:
example <- read.table(textConnection('
A B
1 a
1 a
1 a
2 b
2 c
3 d
4 e
4 e
5 f
5 g
5 g
5 h
'), header = TRUE, colClasses=c("double", "character"))
library(tidyverse)
> distinct(example) %>% group_by(A) %>%
+ summarize(count = n()) %>%
+ filter(count > 1)
# A tibble: 2 x 2
A count
<dbl> <int>
1 2 2
2 5 3
另一种可能的解决方案,在base R
中:
as.numeric(names(which(apply(table(example$A, example$B), 1,
\(x) sum(x == 0) != (length(x)-1)))))
#> [1] 2 5
与@Paul 相同但没有应用功能
names(which(rowSums(table(example$A, example$B) != 0) > 1))
-output
>
[1] "2" "5"