R中的频率计数

aa7*_*762 7 r frequency reshape

这似乎是一个非常基本的R问题,但我很感激答案.我有一个以下形式的数据框:

col1    col2
a   g
a   h
a   g
b   i
b   g
b   h
c   i
Run Code Online (Sandbox Code Playgroud)

我想将它转化为计数,所以结果将是这样的.我尝试过使用table()函数,但似乎只能获得一列的计数.

    a   b   c
g   2   1   0
h   1   1   0
i   0   1   1
Run Code Online (Sandbox Code Playgroud)

我怎么在R?

A5C*_*2T1 9

我不太确定你用过什么,但table对我来说效果很好!

这是一个可重复性最小的例子:

df <- structure(list(V1 = c("a", "a", "a", "b", "b", "b", "c"), 
                     V2 = c("g", "h", "g", "i", "g", "h", "i")), 
                .Names = c("V1", "V2"), class = "data.frame", 
                row.names = c(NA, -7L))
table(df)
#    V2
# V1  g h i
#   a 2 1 0
#   b 1 1 1
#   c 0 0 1
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 尝试table(df[c(2, 1)])(或table(df$V2, df$V1))交换行和列.
  • 使用as.data.frame.matrix(table(df))得到一个data.frame作为输出.(as.data.frame将创建一个长的data.frame,而不是一个你想要的相同输出格式).

  • @AnandaMahto LOL +7答案由`table(df)`组成,当[**this**](http://stackoverflow.com/a/18797893/1478381)获得+1(来自我).我有时候真的没有投票. (2认同)