R语言 按组计算数据框架行之间的差异
在这篇文章中,我们将看到如何在R编程语言中通过数据框架中的组找到行之间的差异。
方法1:使用dplyr包
group_by方法是用来根据特定列中包含的组来划分和隔离日期的。需要分组的列被指定为这个函数的参数。它可以包含多个列名。
语法
group_by(col1, col2, …)
接下来是应用mutate()方法,用于转移方向和对数据进行操作。可以使用新的列名来指定新的列名。与前一行的差异可以用这个库的lag()方法来计算。这个方法可以找到一个向量中的前一个值。
语法
lag(x, n = 1L, default = NA)
参数
- x – 一个值的向量
- n – 要滞后的位置数
- default (默认:NA)–用于不存在的行的值。
通过使用从指定列的特定行中减去的列值的滞后,在数据框中引入一个突变。默认值是使用first(col-name)的该特定组的第一个值。
例子
输出
方法2:使用data.table包
数据框架索引方法可以用来计算R中按组划分的行的差异。所有的行被保留下来,同时在列的集合中添加一个新的列,使用该列来计算按组的行的差异。差值的计算方法是使用指定列的特定行,并从其中减去使用shift()方法计算的前一个值。shift方法是用来滞后向量或列表的。
语法
data_frame[ , new-col-name := reqd-col - shift(reqd-col), by = grouping-col]
在该特定列中,该特定组的第一个实例被替换为NA。
例子
输出
方法3:使用ave()方法
基准R中的ave()方法是用来对因素的水平组合进行平均分组。
语法
ave(x, group , FUN = mean)
参数:
- x – 所需的数据框架列
- group – 分组的变量
- FUN – 对每个因子水平组合要应用的函数。
这里的函数是计算该行中某一列的差值和前一行与它的差值。在该特定列中,该特定组的第一个实例被替换为NA。
例子
输出