【问题标题】:Counting the frequency of an element in a data frame [duplicate]计算数据框中元素的频率[重复]
【发布时间】:2014-03-01 04:43:13
【问题描述】:

我有以下数据框

SelectVar

   b    c    e    f    g    h    j 
1 Dxa2 Dxa2 Dxa2 Dxa2 Dxa2 Dxa2 Dxa2
2 Dxb2 Dxb2 Dxb2 Dxb2 Dxc2 Dxc2 Dxc2
3 Dxd2 Dxi2 tneg tpos Dxd2 Dxi2 tneg

应用计数时我得到

count(SelectVar)

   b    c    e    f    g    h    j   freq
1 Dxa2 Dxa2 Dxa2 Dxa2 Dxa2 Dxa2 Dxa2   1
2 Dxb2 Dxb2 Dxb2 Dxb2 Dxc2 Dxc2 Dxc2   1
3 Dxd2 Dxi2 tneg tpos Dxd2 Dxi2 tneg   1

当我申请时

count(SelectVar==Dxa2)

     b     c     e     f     g     h     j     freq
1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE     1 

我不知道如何计算 SelectVar 中不同元素 Dxa2、Dxb2... 的频率

【问题讨论】:

  • length(SelectVar[SelectVar=="Dxa2"])
  • 这个count函数是从哪里来的?我从来没有注意到它。
  • @Ananta plyr里面有一个,可能是其他包,我不知道。
  • 正确的是来自 plyr

标签: r


【解决方案1】:

您可以将data.frame 转换为vector,然后使用table

df <- read.table(text = "   b    c    e    f    g    h    j 
1 Dxa2 Dxa2 Dxa2 Dxa2 Dxa2 Dxa2 Dxa2
2 Dxb2 Dxb2 Dxb2 Dxb2 Dxc2 Dxc2 Dxc2
3 Dxd2 Dxi2 tneg tpos Dxd2 Dxi2 tneg", header = TRUE, row.names = 1)

table(unlist(df))
## Dxa2 Dxb2 Dxd2 Dxi2 tneg tpos Dxc2 
##    7    4    2    2    2    1    3 

您也可以将结果转为data.frame

as.data.frame(table(unlist(df)))
##   Var1 Freq
## 1 Dxa2    7
## 2 Dxb2    4
## 3 Dxd2    2
## 4 Dxi2    2
## 5 tneg    2
## 6 tpos    1
## 7 Dxc2    3

【讨论】:

    【解决方案2】:

    使用table(),如果它们是因子(您的数据似乎包含),则尤其有用:

    first <- c("a", "b", "c")
    sec <- c("a", "b", "b")
    third <- c("b","c","c")
    myframe <- cbind(first, sec, third)
    table(myframe)
    
    myframe
    a b c 
    2 4 3
    

    虽然如果你有数字列,你可能会得到巨大的、不可读的输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-10
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      • 2021-12-27
      • 2021-06-10
      相关资源
      最近更新 更多