【问题标题】:Frequency counts in R [duplicate]R中的频率计数[重复]
【发布时间】:2013-09-24 13:23:30
【问题描述】:

这似乎是一个非常基本的 R 问题,但我希望能得到答案。我有一个格式如下的数据框:

col1    col2
a   g
a   h
a   g
b   i
b   g
b   h
c   i

我想把它转换成计数,所以结果会是这样的。我试过使用 table () 函数,但似乎只能得到一列的计数。

    a   b   c
g   2   1   0
h   1   1   0
i   0   1   1

我如何在 R 中做到这一点?

【问题讨论】:

  • 你试过这个吗:table(df$column1, df$column2)

标签: r frequency reshape


【解决方案1】:

我不太确定你用的是什么,但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

注意事项:

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

【讨论】:

  • table(df$V1, df$V2)
  • @csgillespie,但我喜欢当你直接使用table 时,你会从变量名中获得额外的标签。您可以通过指定所需的名称(例如:table(V1 = df$V1, V2 = df$V2))来获得相同的方法,但我喜欢尽可能保存输入:)
  • 并使用[,您可以使用存储列名称的变量以编程方式选择列。
  • 我并不是要暗示它“更好”,只是另一种方式。您可以想象一个未来的 SO 问题,其中“我有两个向量......”
  • @AnandaMahto LOL +7 当this 得到+1(来自我)时,答案由table(df) 组成。有时我真的没有得到 SO 投票。
【解决方案2】:

使用@Ananda 中的f,您可以使用dcast

library(reshape2)

> dcast(f, V1~V2)
Using V2 as value column: use value.var to override.
Aggregation function missing: defaulting to length
  V1  g  h  i
1 a   2  1  0
2 b   1  1  1
3 c   0  0  1

但是,我写这篇文章只是为了以防您将来可能需要的不仅仅是table(对于这种情况,这是最简单的正确答案),例如:

set.seed(1)
f$var <- rnorm(7)

> f
  V1 V2        var
1 a   g -0.6264538
2 a   h  0.1836433
3 a   g -0.8356286
4 b   i  1.5952808
5 b   g  0.3295078
6 b   h -0.8204684
7 c   i  0.4874291

> dcast(f, V1~V2, value.var="var", fun.aggregate=sum)
  V1          g          h         i
1 a  -1.4620824  0.1836433 0.0000000
2 b   0.3295078 -0.8204684 1.5952808
3 c   0.0000000  0.0000000 0.4874291

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-30
    • 2016-10-21
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多