【问题标题】:Frequency table from multiple columns with unique variables per row来自多列的频率表,每行具有唯一变量
【发布时间】:2017-05-23 20:22:01
【问题描述】:

在我的数据集test 中,我想生成一个基于两列的频率表 - startend。我的目标是每行只计算一个唯一字母,即使它出现在两列中。例如,在第一行中,“C”应仅计为一个。在第 4 行中,“B”应计算一次,“A”应计算一次,因为它们不相同。我知道我应该以某种方式使用unique() 函数,但我不确定如何将它与table() 结合起来生成一个频率表,将连续重复的字母计为一个(NA 值应该省略)。任何建议,将不胜感激。

> test
   start  end
1      C    C
2      A <NA>
3   <NA> <NA>
4      B    A
5      A    A
6   <NA>    A
7   <NA>    B
8   <NA>    C
9      A <NA>
10     C    C

下表的输出应该是:

> output
  station Freq
1       A    5
2       B    2
3       C    3

以及测试数据:

> dput(test)
structure(list(start = c("C", "A", NA, "B", "A", NA, NA, NA, 
"A", "C"), end = c("C", NA, NA, "A", "A", "A", "B", "C", NA, 
"C")), .Names = c("start", "end"), row.names = c(NA, -10L), class = "data.frame")

【问题讨论】:

    标签: r dplyr aggregate


    【解决方案1】:

    这个怎么样?

    output<- table(unlist(apply(test, 1, unique)))
    output
    
    A B C 
    5 2 3 
    

    apply 不是一个真正有效的函数,因为它是一个美化的for 循环,但在这种情况下它可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多