r - R根据数值和单词对字符串进行分组
问题描述
我有一个数据集,其中包含名称作为带有年份、顺序和分组名称的字符串。每个名称都有一个与名称关联的值。我需要根据每个分组名称的升序年份/顺序对“名称”重新排序,并分配一个值,该值是组内的平均值。
我的问题因为一些名字说拼写名字而不是使用数字而变得更加复杂。例如:“2020 Mid 1st Rounder”相当于“2020 1.05-1.08 Draft Pick”。
这是我的数据框的示例:
Data <- data.frame(Value = c(1,1,1,1,2,2,2,2,2,3,3,3,3,3,3,5),
Name = c("2020 1.01 Draft Pick", "2020 1.04 Draft Pick", "2020 1.02 Draft Pick", "2020 1.03 Draft Pick",
"2020 1.06 Draft Pick","2020 1.04 Draft Pick","2020 1.05 Draft Pick","2020 1.04 Draft Pick",
"2020 Mid 1st Rounder","2020 1.04 Draft Pick","2020 1.08 Draft Pick","2020 1.03 Draft Pick",
"2020 Last Round","2020 1.04 Draft Pick","2020 1.07 Draft Pick","2020 Early 1st Rounder"))
我唯一能想到的需要进行大量手动更改 (str_replace("1.05", "Mid 1st Rounder", Names)),然后拆分字符串以重新排序,我知道必须有更好的方法。谢谢!
我使用的确切代码是:
temp <- Output_table[!(Output_table$`Draft Pick.Name`==""), c('Player.Value', 'Draft Pick.Name')] %>%
group_by('Player.Value', year = readr::parse_number(as.character(`Draft Pick.Name`))) %>%
mutate(averagePergroup = mean(as.numeric(str_replace(`Player.Value`, "^\\d+\\s+([0-9.]+)\\s+.*", "\\1")), na.rm = TRUE))
解决方案
推荐阅读
- html - 设置背景图像的最大高度,但具有水平覆盖
- node.js - 如何使用nodejs创建谷歌表格文档
- r - anaconda命令窗口中的Rstudio和R具有不同的环境
- visual-studio-code - Visual Studio Code 为文本编辑器导航配置分词
- python - 如何使用 numba.njit 运行成员函数
- r - 如果我只知道每个值的一部分,则用 NA 替换值的子集
- python - 如何在 django 应用程序中制作可点击的锚文本?
- node.js - 如何使用带有 nodejs 的 bigquery 插入方法插入地理类型数据
- flutter - 我该如何处理 Flutter 的这种疯狂的关闭要求?
- c# - 如何正确编写 LINQ Concat 查询