![](/img/trans.png)
[英]How do i find a the difference of the max and min of a category and add that difference to a column depending on the category in R?
[英]Find Max & Min of one column and difference of two other columns in R
我正在處理一個名為kpi的表,我需要使用每周每個 BoxID 的最小編號和最大編號來計算每個 BoxID 每周的 (B1 - B0) 差異 -
我無法計算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 列。 先感謝您。
一個簡單的管道似乎可以完成這項工作。 看看是不是這個。
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.