Исходная таблица

library(readxl)
library(DT)
JCR <- read_excel("D:/R/RUSSIA_JCR_2024.xlsx")
datatable(JCR)

Категории журналов и средние значения импакт фактора

 library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.0.4     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
 library(ggplot2)

JCR <- JCR %>%
  filter(!is.na(`2023 JIF`)) %>%
  mutate(`2023 JIF` = str_remove(`2023 JIF`, "<"),
    IF = as.numeric(`2023 JIF`))
RIF <- JCR %>%
  select(1, `Category`, `IF`) %>%
  mutate(`Category` = str_split(`Category`, ", ")) %>%
  unnest(`Category`)
IF_C <-  RIF %>% group_by(`Category`)%>%
  summarise(`IF_mean` = mean(IF))
datatable(IF_C)

Квартили и средние значения импакт фактора

JCR <- JCR %>%
  mutate(`Q` = str_remove(`JIF Quartile`, "Q")) %>%
  filter(Q >= 1 & Q <= 4) 

QIF <- JCR %>%
  select(1,`Q`, `IF`)

IF_Q <- QIF %>%
  filter(!is.na(`Q`)) %>%
  group_by(`Q`) %>%
  summarise(`IF_m` = mean(IF))
datatable(IF_Q)