来自多列的频率表,每行具有唯一变量

时间:2017-05-23 20:22:01

标签: r dplyr aggregate

在我的数据集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")

1 个答案:

答案 0 :(得分:4)

这个怎么样?

group

output<- table(unlist(apply(test, 1, unique))) output A B C 5 2 3 不是一个非常有效的函数,因为它是一个美化的apply循环,但在这种情况下它会正常工作。