如何使用类似名称对列数据进行分组以查找总和、最小值和最大值?

用户2045470

我正在导入一个包含转置数据的 csv 文件。数据具有以下格式的列:AC1,AC2,AD1,AD2,BP1,BP2,CT1,CO1,CO2,CS1,etc

我一直希望完成的是组合在一起并找到每个 LIKE 列标题的 SUM 以及每个新分组列的最小值和最大值。

示例是:

AC1+AC2 = AC(sum), min, max

AD1+AD2 = AD(sum), min, max

BP1+BP2 = BP(sum), min, max

只要最终结果有效,格式和结构并不重要。

这是否可行或是否有更好的方法可以实现这一目标?

我已经通过 Excel 使用了宏,但仍然需要一些手动操作来对数据等进行分组。

尼尔夫斯

假设所有列名都遵循示例中的模式 - 一个常见的字母前缀后跟数字 - 您可以使用这种方法。

示例数据:

set.seed(1001)
df1 <- data.frame(AC1 = sample(1:100, 50, replace = TRUE),
                  AC2 = sample(1:100, 50, replace = TRUE),
                  AD1 = sample(1:100, 50, replace = TRUE),
                  AD2 = sample(1:100, 50, replace = TRUE),
                  BP1 = sample(1:100, 50, replace = TRUE),
                  BP2 = sample(1:100, 50, replace = TRUE)
)

代码。通过从变量名称中删除数字来创建一个新的变量进行分组:

library(tidyr)
library(dplyr)

df1 %>% 
  gather(Var, Val) %>% 
  mutate(Var2 = gsub("\\d+", "", Var)) %>% 
  group_by(Var2) %>% 
  summarise(Sum = sum(Val, na.rm = TRUE), 
            Min = min(Val, na.rm = TRUE), 
            Max = max(Val, na.rm = TRUE))

结果:

# A tibble: 3 x 4
  Var2    Sum   Min   Max
  <chr> <int> <int> <int>
1 AC     4846     1   100
2 AD     4924     4    96
3 BP     5000     1   100

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用选择总和查询来查找总和的最大值和最小值

如何使用定义的最小值和最大值对数据进行排序

如何按天对日期进行分组并在 Pandas 数据框或 python 中查找最小值和最大值

如何获取数据库中所有列的最小值、最大值和总和?

使用 javascript 查找最小值和最大值

使用awk查找最小值和最大值?

python在分组数据框时跨多个列获取最大值和最小值

在 pandas 数据框的列中查找最小值和最大值

使用dplyr分组时如何计算均值,最小值和最大值?

如何使用SQL查找每个组的最小值和最大值?

如何使用循环从文件中查找最大值和最小值

在 Python 中,如何使用正确的最小值和最大值索引周的名称?

Excel:对行进行分组并从组内的两个不同列添加最小值和最大值

如何找出一列相对于另一列的最大值和最小值的总和

如何使用 group by 将列的最大值和最小值提取到嵌套字典

如何使用 awk 计算多列(按行)的最大值和最小值

具有最小值、最大值和总和的 Pandas 数据框 Groupby

查找矩阵的最大值和最小值

查找长向量的最小值和最大值

查找数组子集的最大值和最小值

在.json中查找最大值和最小值

查找列表的最小值和最大值

根据列的总和返回最小值和最大值

查找各个列的最大值/最小值

谷歌表:如何通过匹配最大值和最小值之间的值来查找?

dplyr:将for循环中的列的最小值和最大值分组

最大值和最小值按2列分组

使用SQL查找时间序列值的最大值和最小值

Python数据框连续查找最小值和最大值之间的差异