Как перебрать числа в dplyr - PullRequest
0 голосов
/ 08 мая 2019

Я написал запрос, который дает количество ложных срабатываний в процентах (A).Я хочу выяснить, сколько ложных срабатываний дают разные проценты.

Я знаю, что могу менять A каждый раз, но хочу автоматизировать процесс, используя минимум A, максимум A и каждые 10 чисел между (10, 20..., 100)

Пример кода

df <- tibble("id" = 1:100, "Perc_change" = rnorm(100, mean = 15, sd = 5), "v1" = rnorm(100, mean = 0, sd = 4))

A <- 10

df %>% 
  mutate(x1 = if_else(Perc_change > A, 1, 0),
         x2 = if_else((Perc_change > A) & (v1 > 0 )), 1, 0)) %>% 
  select(x1,x2) %>% 
  summarise(perc = A,
            true = sum(x1 ==1),
            false = sum(x1 == 1 & x2 == 0),
            true_perc = true/(true+false)*100)

Я бы хотел таблицу, которая показывает значения A, true, false, true_perc для различных значений A.

Это текущий вывод моей таблицы


A   true  false  true_perc
10  120    80      60

Я бы хотел, чтобы таблица была такой:

A   true    false    true_perc
10  19721    33767      37
20  18541    29720      38
...
100 10203    11431      47

1 Ответ

1 голос
/ 08 мая 2019

Если мы хотим выполнить цикл, мы можем использовать map из purrr

library(tidyverse)
map_df(seq(10, 100, by = 10), ~ 
      df %>% 
         transmute(x1 = as.integer(Perc_change  > .x),
                   x2 = as.integer(x1 & (v1 > 0)) ) %>% 
         summarise(perc = .x, 
                   true = sum(x1), 
                   false = sum(x1 & !x2 ), 
                   true_perc = true/(true + false) * 100))
...