如何在dplyr中循环浏览数字

时间:2019-05-08 11:48:14

标签: r loops dplyr using

我编写了一个查询,该查询根据百分比(A)给出误报的数量。我想计算出不同百分比会产生多少误报。

我知道我每次都可以更改A,但是我想使用最小A,最大A以及介于(10,20 ...,100)之间的每10个数字来自动化该过程

示例代码

{
    "timestamp": "2019-05-08T11:42:23.064+0000",
    "status": 403,
    "error": "Forbidden",
    "message": "Access Denied",
    "path": "/user/2"
}

我想要一个显示A值的表,其中包含不同的A值。true,false,true_perc。

这是我表的当前输出

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
10  120    80      60

1 个答案:

答案 0 :(得分:1)

如果要循环播放,可以使用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))