r - 在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)
推荐阅读
- java - 如何在intellij中回到以前访问/编辑/打开的文件
- react-native - 应该使用什么替代方法而不是直接从 Animated.Value 访问 _value?
- gitlab - 如何仅在特定分支和合并请求事件上配置 GitLab CI 管道
- android - NativeScript Vue - Windows 10 下的 Android 构建错误(ns build android ...)
- python - 使用 Spacy 检测动态模式并提取变量
- database - 来自 WP 网站的“建立数据库连接时出错”。我是新手,我应该先采取什么步骤?
- java - 如何更改 RecyclerView 中的反向项目位置
- java - 在我的 Spring Boot 应用程序中实现 jwt auth 后,我又遇到了 cors 问题
- ssl - 如何在 kubernetes 中添加 ssl 证书
- docker - Docker - “无新特权”