我正在处理一个名为 kpi 的表,我需要在该表中使用最小编号和最大来计算每个BoxID每周的(B1-B0)差异。每周每个BoxID 号-
我无法计算 First_b1,Last_b0和Diff
kpi <- kpi %>%
mutate(weekNumber = week(dmy(Date))) %>%
group_by(SolboxID, weekNumber) %>%
arrange(SolboxID)
**Date No. BoxID B0 B1 WkNo**
29.10.2018 61931 1 0 0 44
15.11.2018 115763 1 5.38 5.38 46
16.11.2018 119833 1 51.86 52.23 46
29.10.2018 60486 3 23.26 22.97 44
10.11.2018 99576 3 1336.53 1336.53 45
14.11.2018 112259 3 1.19 1.04 46
16.11.2018 117965 3 8.68 47.22 46
16.11.2018 118092 3 47.22 47.22 46
15.11.2018 115396 4 82.05 82.05 46
预期输出表-
Date No. BoxID B0 B1 WkNo First_b1 Last_b0 Diff
29.10.2018 61931 1 0 0 44 0 0 0
15.11.2018 115763 1 5.38 5.38 46 52.23 5.38 46.85
16.11.2018 119833 1 51.86 52.23 46 52.23 5.38 46.85
29.10.2018 60486 3 23.26 22.97 44 22.97 23.26 -0.29
10.11.2018 99576 3 1336.53 1336.53 45 1336.53 1336.53 0
14.11.2018 112259 3 1.19 1.04 46 47.22 1.19 46.03
16.11.2018 117965 3 8.68 47.22 46 47.22 1.19 46.03
16.11.2018 118092 3 47.22 47.22 46 47.22 1.19 46.03
15.11.2018 115396 4 82.05 82.05 46 82.05 82.05 0
我需要一些帮助来计算另外3列。 预先谢谢你。
答案 0 :(得分:1)
一个简单的管道似乎可以完成任务。看看是不是。
library(tidyverse)
kpi %>%
group_by(BoxID, WkNo) %>%
mutate(i = which.min(No.),
j = which.max(No.)) %>%
mutate(First_B0 = B0[i],
Last_B1 = B1[j],
Diff = Last_B1 - First_B0) %>%
select(-i, -j)
## A tibble: 9 x 9
## Groups: BoxID, WkNo [6]
# Date No. BoxID B0 B1 WkNo First_B0 Last_B1 Diff
# <fct> <int> <int> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
#1 29.10.2… 61931 1 0 0. 44 0 0 0
#2 15.11.2… 115763 1 5.38 5.38e0 46 5.38 52.2 46.8
#3 16.11.2… 119833 1 51.9 5.22e1 46 5.38 52.2 46.8
#4 29.10.2… 60486 3 23.3 2.30e1 44 23.3 23.0 -0.29
#5 10.11.2… 99576 3 1337. 1.34e3 45 1337. 1337. 0
#6 14.11.2… 112259 3 1.19 1.04e0 46 1.19 47.2 46.0
#7 16.11.2… 117965 3 8.68 4.72e1 46 1.19 47.2 46.0
#8 16.11.2… 118092 3 47.2 4.72e1 46 1.19 47.2 46.0
#9 15.11.2… 115396 4 82.0 8.20e1 46 82.0 82.0 0
数据。
kpi <- read.table(text = "
Date No. BoxID B0 B1 WkNo
29.10.2018 61931 1 0 0 44
15.11.2018 115763 1 5.38 5.38 46
16.11.2018 119833 1 51.86 52.23 46
29.10.2018 60486 3 23.26 22.97 44
10.11.2018 99576 3 1336.53 1336.53 45
14.11.2018 112259 3 1.19 1.04 46
16.11.2018 117965 3 8.68 47.22 46
16.11.2018 118092 3 47.22 47.22 46
15.11.2018 115396 4 82.05 82.05 46
", header = TRUE)