r - 基于列减去 data.frame 中的数字 - R

标签 r dataframe grouping subtraction

我是新手 R 程序员。我有这个虚拟数据框。

a b group
1 4 1
5 5 1
7 8 1
10 9 1
14 0 2
18 4 2
20 5 2
25 7 2
29 10 3
35 15 3
40 22 3
48 44 3
57 34 4
68 65 4
77 8 4
86 55 4

我想生成 a 列和 b 列的第 1 组和第 2 组、第 2 组和第 3 组、第 3 组和第 4 组之间的差异。

我认为我做得非常机械。

感谢您的宝贵时间

最佳答案

在这里,OP提到“组”具有相同数量的元素,因此,一个选择是删除最后 4 个元素 (head(df2, -4)[-3]) 和第一个元素4 个元素 (tail(df2, -4)[-3]),这样我们就可以得到组 1-2、2-3 等之间列 'a'、'b' 的差异。因为“小组”是有序的。出于分类目的,使用通过粘贴“group”的唯一元素(通过删除第一个和最后一个元素)创建的“group”向量进行cbind元素)

un1 <- unique(df2$group)
cbind(group = rep(paste(un1[-length(un1)], un1[-1], sep="-"), each = 4), 
      head(df2,-4)[-3]- tail(df2,-4)[-3])
#    group   a   b
#1    1-2 -13   4
#2    1-2 -13   1
#3    1-2 -13   3
#4    1-2 -15   2
#5    2-3 -15 -10
#6    2-3 -17 -11
#7    2-3 -20 -17
#8    2-3 -23 -37
#9    3-4 -28 -24
#10   3-4 -33 -50
#11   3-4 -37  14
#12   3-4 -38 -11

关于r - 基于列减去 data.frame 中的数字 - R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42917727/

相关文章:

r - 如果单元格包含点,则将栅格单元格值更改为 NA

r - 使用 dplyr : Within groups, 选择第一个满足条件的值

c# - C# 项目列表中的唯一值

r - 使用 dplyr 进行汇总并使用平均值和 sd (+/-) 导出表

r - 使用ggplot2绘制两个长度不等的数据集

python - 获取 pandas DataFrame 的名称

r - 选择具有特定条件的子数据集,而不使用应用和子集函数

python - 根据每个组的第一个元素从列表列表中收集元素

c# - 使用 Linq to SQL 生成销售报告

r - 如何在 R 中创建如下所示的矩阵