如何为不同变量计算不同列数之间的最大差异

问题描述 投票:1回答:1

我有一个数据帧(df),具有两个不同位置(AB)和不同深度(5米C.I.5m,12米C.I.12m,20米C.I.20m的平均电流强度) ,28米C.I.28m和35米C.I.35m)。这里我展示一个例子:

df<- data.frame(Datetime=c("2018-08-06 00:00:00","2018-08-06 00:00:00","2018-08-06 03:00:00","2018-08-06 03:00:00","2018-08-06 06:00:00","2018-08-06 06:00:00"),
                Site=c("A","B","A","B","A","B"),
                C.I.5m=c(0.1,0.3,0.8,0.2,0.4,0.2),
                C.I.12m=c(0.2,0.1,0.6,0.3,0.2,0.4),
                C.I.20m=c(0.1,0.3,0.7,0.4,0.4,0.2),
                C.I.28m=c(0.2,0.3,0.4,0.1,0.1,0.2),
                C.I.35m=c(0.3,0.5,0.2,0.3,0.4,0.1))
df

             Datetime Site C.I.5m C.I.12m C.I.20m C.I.28m C.I.35m
1 2018-08-06 00:00:00    A    0.1     0.2     0.1     0.2     0.3
2 2018-08-06 00:00:00    B    0.3     0.1     0.3     0.3     0.5
3 2018-08-06 03:00:00    A    0.8     0.6     0.7     0.4     0.2
4 2018-08-06 03:00:00    B    0.2     0.3     0.4     0.1     0.3
5 2018-08-06 06:00:00    A    0.4     0.2     0.4     0.1     0.4
6 2018-08-06 06:00:00    B    0.2     0.4     0.2     0.2     0.1

我想计算深度在不同变量之间(即,在数据框的列之间)的当前强度有多少不同。我将第一个变量称为MCICCMaximum Current Intensity Change in Column),它是来自与电流强度相关的不同列(C.I.5mC.I.12mC.I.20mC.I.28m和[C0 ])。然后,另一个变量C.I.35m总结了MCIC10mC.I.5m之间的差异。然后另一个称为C.I.12m的摘要总结了MCIC20mC.I.12mC.I.20m之间的差异。最后,一个名为C.I.28m的变量总结了MCIC30mC.I.28m之间的差异。

我希望这样:

C.I.35m

棘手的是,每个新变量都是从不同数量的主列中计算出来的。 > df Datetime Site C.I.5m C.I.12m C.I.20m C.I.28m C.I.35m MWCICC MWCIC10 MWCIC20 MWCIC30 1 2018-08-06 00:00:00 A 0.1 0.2 0.1 0.2 0.3 0.2 0.1 0.1 0.1 2 2018-08-06 00:00:00 B 0.3 0.1 0.3 0.3 0.5 0.4 0.2 0.2 0.2 3 2018-08-06 03:00:00 A 0.8 0.6 0.7 0.4 0.2 0.6 0.2 0.3 0.2 4 2018-08-06 03:00:00 B 0.2 0.3 0.4 0.1 0.3 0.3 0.1 0.3 0.2 5 2018-08-06 06:00:00 A 0.4 0.2 0.4 0.1 0.4 0.3 0.2 0.3 0.3 6 2018-08-06 06:00:00 B 0.2 0.4 0.2 0.2 0.1 0.3 0.2 0.2 0.1 考虑5个深度(五列),MCICC考虑5和12米的深度(两列),MCIC10考虑12、20和28米的深度(两列),[C0 ]考虑了28米和35米的深度(三列)。

有人知道如何一次计算全部吗?

r dplyr data.table
1个回答
2
投票

我们可以使用MCIC20计算不同列之间的成对差异

MCIC30
© www.soinside.com 2019 - 2024. All rights reserved.