如何在r中获取table中特定元素的坐标

How to get the coordinates of a specific element in a table in r

大家好,你们知道如何列出组合最频繁的元素对吗? 假设我有两个向量,我执行交叉制表,我想找到这两个向量中出现频率最高的一对。并将其作为列表,例如 (2,3),这意味着第一个向量的元素 2 和第二个向量的元素 3 它们的组合是最频繁的。 例如:

mp<- c(1,1,1,1,2,2,3,4)
mp1<- c("red", "red", "red", "red", "blue", "blue", "green", "pink")

table(mp,mp1)
   mp1
mp  blue green pink red
  1    0     0    0   4
  2    2     0    0   0
  3    0     1    0   0
  4    0     0    1   0

我可以看到最常见的一对是 (1, "red") 但我怎样才能得到它呢?

你可以这样设计你的功能

v1 <- c(2,3,2,3)
v2 <- c("blue", "red", "blue", "green") 
tbl <- table(v1, v2)
tbl # most frequent combination: 2 & blue
max(tbl) # most frequent combination = 2
indices = which(tbl == max(tbl), arr.ind = TRUE) # indices for row and column of
indices                                          # the max value
v1.val = rownames(tbl)[indices[, 1]]
v2.val = colnames(tbl)[indices[, 2]]
res = c(v1.val, v2.val)
res # result

它也应该与

一起使用
v1 <- c(1,1,1,1,2,2,3,4)
v2 <- c("red", "red", "red", "red", "blue", "blue", "green", "pink")

请注意,将字符串添加到数值向量会将向量中的所有元素转换为字符。这里的结果将是一个字符向量。

首先,从你的向量中创建一个数据框:

mp<- c(1,1,1,1,2,2,3,4)
mp1<- c("red", "red", "red", "red", "blue", "blue", "green", "pink")
df <- data.frame(mp, mp1)

那么你有many options to count combinations。我个人比较喜欢dplyr,所以:

count_table <- dplyr::count_(df, vars = c('mp','mp1'))
count_table
# A tibble: 4 x 3
     mp    mp1     n
  <dbl> <fctr> <int>
1     1    red     4
2     2   blue     2
3     3  green     1
4     4   pink     1

只能输出第一行:

count_table[1,]
# A tibble: 1 x 3
     mp    mp1     n
  <dbl> <fctr> <int>
1     1    red     4