R:计算每个类别的观察次数

数据挖掘 r 数据集 预处理 计数
2022-02-15 09:18:48

我目前从 R 开始,想知道如何从下面的数据集中计算每天、每个节点、每个复制的观察次数,并存储在不同的数据集中。原始数据集如下所示: 在此处输入图像描述

希望生成的数据集如下所示: 在此处输入图像描述

有人可以帮我找出如何在 R 中做到这一点吗?谢谢

2个回答

您也可以使用dplyr软件包执行此操作。dplyr包具有group_by按一个或多个变量对数据进行分组并summarise执行一些聚合功能的功能。dplyr软件包还支持“管道”表示法%>%这种表示法意味着前一个函数的输出是下一个函数的第一个参数。这是您的一个变量的样子。dplyr包也很好,因为它的功能不需要引用列名或在字符向量中。

library(dplyr)
my_summary_data <- mydata %>%
    group_by(Replicate) %>%
    summarise(Count = n())      
# The last line creates a new column named Count with a value calculated by n(), 
# which counts observations (rows) per group.

输出类似于:

my_summary_data
Replicate  Count
1          8
2          7

group_by函数可以按多列分组,所以

my_summary_data <- mydata %>%
    group_by(Replicate, Node) %>%
    summarise(Count = n())      
    

将产生:

Replicate  Node  Count
1          1     5
1          2     3
2          1     7

我喜欢使用该plyr库,但还有其他方法:

library(plyr)
ddply(mydata, c('Replicate','Node','Day'), nrow)
  • ddinddply表示输入是数据,输出也是数据
  • 行按作为第二个参数给出的列的值分组
  • 最后一个参数是应用于每个组的函数,在这种情况下nrow只是简单地计算组中的行数。

如果您想同时命名该列,您可以执行以下操作:

library(plyr)
ddply(mydata, c('Replicate','Node','Day'), function(groupDF) {
  data.frame(countObservations=nrow(groupDF))
})