library(purrr)
#> Warning: package 'purrr' was built under R version 4.1.3
library(nicethings)
library(dplyr)
#> Warning: package 'dplyr' was built under R version 4.1.3
#> 
#> 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
library(glue)

dat <- data.frame(prevalence = c(0.005, 0.01, 0.05, seq(0.1, 0.9, 0.05)))
dat
#>    prevalence
#> 1       0.005
#> 2       0.010
#> 3       0.050
#> 4       0.100
#> 5       0.150
#> 6       0.200
#> 7       0.250
#> 8       0.300
#> 9       0.350
#> 10      0.400
#> 11      0.450
#> 12      0.500
#> 13      0.550
#> 14      0.600
#> 15      0.650
#> 16      0.700
#> 17      0.750
#> 18      0.800
#> 19      0.850
#> 20      0.900

ors <- seq(1.25, 5, 0.25)
ors
#>  [1] 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00 3.25 3.50 3.75 4.00 4.25 4.50 4.75
#> [16] 5.00

dat <- ors %>%
  map( ~ dat %>%
         select(1) %>%
         nice_sampsi_cc(pi_0 = ., or = .x, power = 90, alpha = 5) %>%
         set_names(glue("OR >= {.x}"))
  ) %>%
  bind_cols(dat, .)
dat
#>    prevalence OR >= 1.25 OR >= 1.5 OR >= 1.75 OR >= 2 OR >= 2.25 OR >= 2.5
#> 1       0.005     152244     42332      20714   12722       8828      6606
#> 2       0.010      76596     21320      10442    6418       4456      3338
#> 3       0.050      16112      4522       2230    1380        964       726
#> 4       0.100       8602      2438       1214     756        532       404
#> 5       0.150       6142      1758        882     554        394       300
#> 6       0.200       4952      1432        724     460        328       252
#> 7       0.250       4274      1248        638     406        292       226
#> 8       0.300       3860      1138        586     376        272       212
#> 9       0.350       3602      1072        556     360        262       206
#> 10      0.400       3454      1038        542     354        260       204
#> 11      0.450       3386      1026        542     356        262       208
#> 12      0.500       3390      1038        552     364        270       216
#> 13      0.550       3464      1068        572     382        284       228
#> 14      0.600       3612      1124        608     406        306       246
#> 15      0.650       3852      1210        658     444        334       270
#> 16      0.700       4220      1338        732     496        376       306
#> 17      0.750       4778      1528        842     574        438       356
#> 18      0.800       5660      1826       1014     696        532       436
#> 19      0.850       7180      2336       1306     902        694       570
#> 20      0.900      10284      3372       1898    1318       1018       840
#>    OR >= 2.75 OR >= 3 OR >= 3.25 OR >= 3.5 OR >= 3.75 OR >= 4 OR >= 4.25
#> 1        5204    4252       3572      3066       2676    2368       2120
#> 2        2632    2152       1808      1552       1356    1200       1076
#> 3         576     472        400       344        302     268        242
#> 4         322     266        226       196        174     154        140
#> 5         242     200        172       150        132     120        108
#> 6         204     170        146       128        114     104         94
#> 7         184     154        134       118        106      96         88
#> 8         174     146        128       112        100      92         84
#> 9         168     144        124       110        100      92         84
#> 10        168     144        126       112        102      94         86
#> 11        172     148        130       116        106      98         90
#> 12        180     154        136       122        112     104         96
#> 13        190     164        146       132        120     112        104
#> 14        206     178        160       144        132     122        114
#> 15        228     198        178       160        148     138        130
#> 16        258     226        202       184        170     158        150
#> 17        304     266        240       218        202     188        178
#> 18        372     328        296       270        250     234        222
#> 19        488     432        390       358        332     312        294
#> 20        722     640        580       532        496     466        442
#>    OR >= 4.5 OR >= 4.75 OR >= 5
#> 1       1916       1746    1602
#> 2        972        886     814
#> 3        220        202     186
#> 4        128        118     108
#> 5        100         92      86
#> 6         86         80      74
#> 7         80         76      70
#> 8         78         74      68
#> 9         78         74      70
#> 10        80         76      72
#> 11        84         80      76
#> 12        90         86      80
#> 13        98         92      88
#> 14       108        102      98
#> 15       122        116     110
#> 16       142        134     128
#> 17       168        162     154
#> 18       210        202     194
#> 19       280        268     258
#> 20       422        404     390