我有一个如下所示的数据集:
groups <- c(1:20)
values1 <- c(1,3,2,4,2,5,1,6,2,7,3,5,2,6,3,5,1,5,3,4)
values2 <- c(3,2,4,1,5,2,4,1,3,2,6,1,4,2,5,3,7,1,4,2)
sample.data <- data.frame(groups,values1,values2)
head(sample.data)
groups values1 values2
1 1 1 3
2 2 3 2
3 3 2 4
4 4 4 1
5 5 2 5
6 6 5 2
描述:具有 20 个不同组的 20 组值(values1 和 values2)的数据框。数字遵循以下模式:(1)数字交替出现高低(2)如果values1
列中的数字高于其相邻的 2 个数字,则 values2
列中的相应数字将低于其相邻的 2 个数字(可以在样本中看到)
我想从这些数字中计算出来的东西称为“增量值”(dV)——它被计算为一个高值数字与相邻的 2 个低值数字的平均值之间的差异。例如,对于values1
列 (1,3,2) 的前 3 个数字集,第一个 dV 将是 3-((2+1)/2)=1.5;然后取该组的最后一个数作为下一组的第一个数,做同样的计算,所以第二个dV是4-((2+2)/2)=2;等等。然后将该列的所有这些 dV 值记录values1
在名为 的新列中dV1
。对列执行相同的values2
操作并将所有 dV 值记录在新dV2
列中。请注意,在values2
列,第一个数字高于第二个,因此忽略它并使用下一个 3 数字集 (2,4,1) 开始计算,并重复上述计算。
那么如何在 R 中执行这个计算呢?
先感谢您!
P/S:对不起,这是一个很长的问题,但我认为它包含了计算所需的所有信息。