如何在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
大家好,你们知道如何列出组合最频繁的元素对吗? 假设我有两个向量,我执行交叉制表,我想找到这两个向量中出现频率最高的一对。并将其作为列表,例如 (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