如何计算与R中另一列中每个值对应的列中每个值的频率?

Nad*_*ain 1 aggregate r

我有一个数据集如下:

 col1   col2
    A   1
    A   2
    A   2
    B   1
    B   1
    C   1
    C   1
    C   2
Run Code Online (Sandbox Code Playgroud)

我希望输出为:

 col1  col2  Frequency
    A     1      1
    A     2      2
    B     1      2
    C     1      2
    C     2      1
Run Code Online (Sandbox Code Playgroud)

我尝试使用聚合函数和表函数,但我无法获得所需的结果.

A5C*_*2T1 5

您可以添加虚拟列或使用rownames聚合来:

aggregate(rownames(mydf) ~ ., mydf, length)
#   col1 col2 rownames(mydf)
# 1    A    1              1
# 2    B    1              2
# 3    C    1              2
# 4    A    2              2
# 5    C    2              1
Run Code Online (Sandbox Code Playgroud)

table 也可以正常工作,但会将可能不在您的数据中的组合报告为"0":

data.frame(table(mydf))
#   col1 col2 Freq
# 1    A    1    1
# 2    B    1    2
# 3    C    1    2
# 4    A    2    2
# 5    B    2    0
# 6    C    2    1
Run Code Online (Sandbox Code Playgroud)

另一个不错的方法是使用"data.table":

library(data.table)
as.data.table(mydf)[, .N, by = names(mydf)]
Run Code Online (Sandbox Code Playgroud)