在R中计算分类变量的唯一配对数

8
如果我有这些数据:
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,two)的频率。我知道如果我想要找到列One中不同元素的频率,我会使用table(df$one)。那么如何查找唯一对的频率?


2
尝试使用 table(df)。但可能不是您要查看的输出。 - user3710546
3
或许可以使用 data.frame(table(df)) 这个语句。 - thelatemail
@thelatemail 当然。易懂且高效。 - user3710546
2个回答

4
table(as.character(interaction(df)))

或者

library(qdap)
table(paste2(df))

# X.A X.B Y.B Z.B Z.C 
#   2   2   3   1   1 

2
这是 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

需要注意的是,这忽略了可能不存在的One x Two组合(所有其他答案也是如此)。 - thelatemail
有没有想法如何获取一个包括所有0频率对的表格? - Stu
我收到了这个错误 summarize(Count = n()) 错误:不应直接调用此函数。 - Herman Toothrot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接