Подсчет уникальных пар категориальных переменных в R

Если у меня есть эти данные:

One <- c(rep("X",4),rep("Y",3),rep("Z",2))
Two <- c(rep("A",2),rep("B",6),rep("C",1))

df <- data.frame(One,Two) 

  One Two
1   X   A
2   X   A
3   X   B
4   X   B
5   Y   B
6   Y   B
7   Y   B
8   Z   B
9   Z   C

Я хочу найти частоту уникальных пар (один, два). Я знаю, что если бы я хотел найти частоту различных элементов в столбце One, я бы сделал table(df$one). Как насчет частоты уникальных пар?


person theamateurdataanalyst    schedule 24.07.2014    source источник
comment
Попробуйте table(df). Но, возможно, это не тот результат, который вы ищете.   -  person    schedule 24.07.2014
comment
@Pascal - может быть data.frame(table(df)) тогда.   -  person thelatemail    schedule 24.07.2014
comment
@thelatemail Конечно. Легко и эффективно.   -  person    schedule 24.07.2014


Ответы (1)


Это dplyr решение.

library(dplyr)

df %>% group_by(One,Two) %>%
      summarize(Count = n())

Это возвращает фрейм данных, подобный этому

Source: local data frame [5 x 3]
Groups: One

  One Two Count
1   X   A     2
2   X   B     2
3   Y   B     3
4   Z   B     1
5   Z   C     1
person Koundy    schedule 24.07.2014
comment
Следует отметить, что это игнорирует возможные комбинации One x Two, которых не было (как и все другие ответы). - person thelatemail; 24.07.2014
comment
Есть идеи, как получить таблицу, которая также включает все 0-частотные пары? - person Stu; 01.03.2016
comment
Я получаю эту ошибку суммирую (Count = n ()) Ошибка: эту функцию не следует вызывать напрямую - person Herman Toothrot; 01.06.2018