簡體   English   中英

在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM