r - 使用带状变量扩展行
问题描述
我正在尝试使用带状变量扩展行。下面是输入数据和所需的输出数据。基本上想使用吨位来扩展我的行,在输入数据集中有更宽的宽度。
我尝试使用 expand.grid 和 splitstackshape 但无法继续。请帮忙。
解决方案
这是一个建议。我编写了一个带有三个参数的函数:start、end 和 cutoffs。然后,逐行运行此函数。关键是用来cut()
为波段生成字符串。
library(tidyverse)
dat <- data.frame(key = c("FDE", "GED"), tonnage = c("0-40", "7.5-40"))
split_numbers <- function(start, end, cutoffs) {
cutoffs <- cutoffs[between(cutoffs, start, end)]
cut(1, cutoffs) %>%
levels() %>%
str_remove_all("\\(|\\]") %>%
str_replace(",", "-") %>%
c(paste0(end, "+"))
}
dat %>%
separate(tonnage, c("start", "end"), sep = "-") %>%
group_by(key) %>%
summarise(
tonnage_split = list(split_numbers(start, end, c(0, 7.5, 12, 20, 40)))
) %>%
unnest(tonnage_split)
# # A tibble: 9 x 2
# key tonnage_split
# <chr> <chr>
# 1 FDE 0-7.5
# 2 FDE 7.5-12
# 3 FDE 12-20
# 4 FDE 20-40
# 5 FDE 40+
# 6 GED 7.5-12
# 7 GED 12-20
# 8 GED 20-40
# 9 GED 40+
推荐阅读
- python-3.x - PyQt 为什么在循环中添加上下文菜单项不起作用?
- python - 如何从python中给定列表中不存在的布尔字符串中删除术语?
- javascript - 使用 Google Apps 脚本从 Google Drive 中的多个上传元素上传本地文件
- vue.js - 如何在您是 Google Workplace 成员的电子表格中切换侧边栏?
- php - 在laravel中使用外键迁移时出错
- bash - Bash 排序未正确按时间排序
- karate - 如何为空手道 UI 自动化中运行的所有场景仅自定义一次 chrome 驱动程序调用
- javascript - 获取多个 url 然后相应地设置状态 React Native
- intellij-idea - 如何使用终端从 ubuntu 20.04 LTS 卸载任何软件?
- python - Python 如何将当前目录添加到 sys.path