如何计算一个因素在另一个因素中出现的次数?

时间:2021-02-27 14:03:35

标签: r frequency

我对 R 很陌生,所以请耐心等待!

我有一个数据集,其中包含飞蛾种类、记录飞蛾的人的姓名(记录者)、记录它们的年份等。

我想创建一个新表,其中包含每年不同飞蛾记录器的数量。到目前为止,我已经设法制作了一张表格,列出了我每年录制的总录音,但这并不是我所需要的。

这是我使用的代码,有人可以提供修正或替代方法吗?

#create table with number of moth recorders per year
library(plyr)
diversity <- ddply(mydata4, c("Year"), summarise,
                   N    = length(Recorder))

diversity

谢谢!

1 个答案:

答案 0 :(得分:-1)

因为您是 R 的新手并且正在积极地通过它的声音学习;我会给你一个正确的方向的推动。我总是发现,当我自己想通了,并且不想夺走你的时候,事情就会变得最好。

所以:听起来您想要的是计数不同个记录器按年份分组。 (提示提示)

我建议查看 dplyrtidyr 包 (for which there is a handy cheatsheet),因为它们对于此类数据框操作非常有用。

此外,当您刚开始学习 R 时,另一个值得一看的有用信息(尽管与您当前的问题无关)是 the Tidyverse Code Style Guide


对于那些希望详细说明答案的人,请参见下文。如果您想自己弄清楚,请立即移开视线。

原始问题说明有一个具有以下属性的数据集:

  • 蛾类
  • 记录者姓名
  • 飞蛾的记录年份。

问题中提供的代码被报告为生成每年录制的总数量的表格。由此我们可以推断出原始表每个记录只有一行。

该问题还涉及两个特定的列:YearRecorder。从这个信息以及问题提到的数据集包括蛾类的事实,我们可以推断该数据集至少有三列:

  • 物种
  • 录音机
  • 年份

那么,让我们制作一些示例数据:

mydata4 <- data.frame(
  Species = c("Red", "Blue", "Red", "Blue", "Green"),      
  Year = c("2019", "2019", "2019", "2018", "2018"),
  Recorder = c("Alice", "Alice", "Bob", "Alice", "Alice")
)

现在,正如我上面提到的,我们需要按年份分组的不同记录器的数量……所以:

library(dplyr)
mydata4 %>% group_by(Year) %>% distinct(Recorder) %>% count()

我们按年份分组,我们确保每个组中的行被记录器不同,最后我们计算每个组中的行,因为此时我们已经确保每个组每个记录器只有一行记录那一年至少有一只飞蛾。

# A tibble: 2 x 2
# Groups:   Year [2]
  Year      n
  <fct> <int>
1 2018      1
2 2019      2
相关问题