我正在导入一个包含转置数据的 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] 删除。
我来说两句