如何在r中获取表中特定元素的坐标
嘿,伙计们,你们知道我如何列出组合最频繁的元素对吗? 假设我有两个向量,我执行交叉制表,我想找到这两个向量中最频繁的一对。把它作为一个列表,例如(2,3),这意味着第一个向量的元素2和第二个向量的元素3的组合是最频繁的。 例如:如何在r中获取表中特定元素的坐标,r,list,crosstab,R,List,Crosstab,嘿,伙计们,你们知道我如何列出组合最频繁的元素对吗? 假设我有两个向量,我执行交叉制表,我想找到这两个向量中最频繁的一对。把它作为一个列表,例如(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
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
mp您可以用这种方式设计函数
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首先,从向量生成一个数据帧:
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)
只能输出第一行:
count_table[1,]
# A tibble: 1 x 3
mp mp1 n
<dbl> <fctr> <int>
1 1 red 4
count_表[1,]
#一个tibble:1 x 3
mp mp1 n
1红色4
大家好,欢迎来到StackOverflow。你能提供一个可复制的例子吗?至少有一个向量示例。向量中有一些重复的值?谢谢。我想把它放在一个函数上。我将提供两个等长向量的函数,它将计算交叉列表,我希望返回两个元素,它们的组合是最频繁的。Egv1但它们不是唯一的数字,可以是,例如v2Ok,我说对了,但是你想要向量中的位置,所以你想如何处理“蓝色”例如,哪一个是v2的第一个和第二个元素?我不能通过添加typeof来保持每个元素的原始形式吗?如果向量的类型不同,这将是不可能的。试试这个a
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