Как сгруппировать данные столбца с одинаковыми именами, чтобы найти суммы, минимумы и максимумы? - PullRequest
0 голосов
/ 11 июня 2019

Я импортирую CSV-файл, который содержит транспонированные данные.Данные имеют столбцы в следующем формате: AC1, AC2, AD1, AD2, BP1, BP2, CT1, CO1, CO2, CS1 и т. Д.

То, что я надеялся сделать, это сгруппировать и найтиСумма заголовка каждого столбца LIKE, а также минимальное и максимальное значения каждого из этих недавно сгруппированных столбцов.

Примером может быть:

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

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

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

Формат и структура не имеют значения, пока работает конечный результат.

Возможно ли это или есть лучший подход, которыйМожно ли этого добиться?

Я использовал макросы через Excel, и для группировки данных все еще требуется немного ручных усилий.

1 Ответ

1 голос
/ 11 июня 2019

Предполагая, что все имена столбцов следуют шаблону в вашем примере - общий префикс букв, за которыми следуют цифры - вы можете использовать этот подход.

Пример данных:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...