Как суммировать разные данные в переменной chr с помощью filter?

#r #dplyr #filter

#r #dplyr #Фильтр

Вопрос:

Я пытаюсь преобразовать эти данные в график, но я хочу подсчитать конкретное количество HMO PPO атрибутов or для сумм посещений (ноль, один, два, три, четыре, пять, Six_Plus). В моем df всего отключено 44 HMO и 179 PPO.

Visit_Amount Reporting_product Процент_Avg_Value
Один HMO 1.1%
Два HMO 1.2%
Три HMO 4.9%
Четыре HMO 2%
Пять HMO 10.5%
Шесть HMO 79%
Один PPO 1.1%
Два PPO 1.2%
Три PPO 2.2%
Четыре PPO 2%
Пять PPO 10.5%
Шесть PPO 76.6%

Код, который у меня есть до сих пор

 library (tidyverse)

tidyr::pivot_longer(
      cols = c("Zero", "One", "Two", "Three", "Four", "Five", "Six_Plus")
    ,names_to = "visit_amount",
    values_to = "value") %>% 
    
  group_by(reporting_product, visit_amount) %>% 
  summarise(n_reporting_product = n()
          , avg_value = mean(value)) %>% 
    ungroup() %>%
    mutate(
     n_reporting_product  = as.numeric(sum (reporting_product == "PPO", reporting_product == "HMO"))
     ,percent_avg_value = scales::percent(avg_value, 0.01)) %>% 
    select(visit_amount, reporting_product, avg_value, percent_avg_value)
 

Я хочу рассчитать «сумму» для того, сколько планов «PPO» и планов «HMO» учитываются для каждого количества посещений. Например, вносят ли 2 плана HMO вклад в одно посещение?

Комментарии:

1. Добро пожаловать в SO! Не могли бы вы добавить воспроизводимый образец набора данных, используя dput ?

Ответ №1:

Существует count функция:

 library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
data <- tibble::tribble(
  ~Visit_Amount, ~Reporting_product, ~Percent_Avg_Value,
          "One",              "HMO",             "1.1%",
          "Two",              "HMO",             "1.2%",
        "Three",              "HMO",             "4.9%",
         "Four",              "HMO",               "2%",
         "Five",              "HMO",            "10.5%",
          "Six",              "HMO",              "79%",
          "One",              "PPO",             "1.1%",
          "Two",              "PPO",             "1.2%",
        "Three",              "PPO",             "2.2%",
         "Four",              "PPO",               "2%",
         "Five",              "PPO",            "10.5%",
          "Six",              "PPO",            "76.6%"
  )
data %>% count(Reporting_product)
#> # A tibble: 2 x 2
#>   Reporting_product     n
#>   <chr>             <int>
#> 1 HMO                   6
#> 2 PPO                   6
data %>% count(Visit_Amount, Reporting_product)
#> # A tibble: 12 x 3
#>    Visit_Amount Reporting_product     n
#>    <chr>        <chr>             <int>
#>  1 Five         HMO                   1
#>  2 Five         PPO                   1
#>  3 Four         HMO                   1
#>  4 Four         PPO                   1
#>  5 One          HMO                   1
#>  6 One          PPO                   1
#>  7 Six          HMO                   1
#>  8 Six          PPO                   1
#>  9 Three        HMO                   1
#> 10 Three        PPO                   1
#> 11 Two          HMO                   1
#> 12 Two          PPO                   1
 

Создано 2021-12-02 пакетом reprex (v2.0.1)

Комментарии:

1. ‘df’, с которым я работаю, равен 223 x 8. Всего 44 HMO и 179 PPO. Я хочу рассчитать, сколько HMO из 44 относятся к каждому количеству посещений, то же самое с PPO.

2. 223 столбца? Таблица, которую вы опубликовали в примере, не является вашими исходными данными примера? Размеры таблицы обычно указываются в количестве строк x количестве столбцов. Затем выполните count после pivot_longer