подсчитать количество пар в большом наборе данных R - PullRequest
2 голосов
/ 15 апреля 2020

У меня есть набор данных 4049x30, каждая ячейка имеет номер или NA. Мне нужно посчитать, сколько раз определенная пара чисел появляется в строке. Т.е.

m<-matrix(c(1, 2, 3,
            1, 5, 6,
            3, 5, 6,
            2, 3, 7), ncol=3, byrow = TRUE)

У меня (2,3) дважды и (5,6) дважды

Большое спасибо за вашу помощь

Ответы [ 2 ]

5 голосов
/ 15 апреля 2020
m_tbl <- table(paste(m[,-ncol(m)], m[,-1], sep = ','))

m_tbl[m_tbl > 1]
# 2,3 5,6 
#   2   2


m_tbl <- table(m[,-ncol(m)], m[,-1])

subset(as.data.frame(m_tbl), Freq > 1)
#    Var1 Var2 Freq
# 6     2    3    2
# 16    5    6    2


library(data.table)
m_dt <- data.table(c(m[,-ncol(m)]), c(m[,-1]))

m_dt[, .N, V1:V2][N > 1]
#    v1 v2 N
# 1:  2  3 2
# 2:  5  6 2
2 голосов
/ 15 апреля 2020

Мы также можем сделать

library(dplyr)
library(stringr)
tibble(col1 = str_c(m[, -ncol(m)], m[, -1])) %>% 
    count(col1) %>%
    filter(n > 1)
...