N <- 2000
n <- 400

datos <- data.frame(
  ID = 1:2000,
  Estrato = c(rep("E1",1000),
              rep("E2",600),
              rep("E3",400))
)

estratos <- data.frame(
  Estrato = c("E1","E2","E3"),
  N2 = c(1000,600,400)
)

estratos$n <- (estratos$N2/N)*n

estratos
##   Estrato   N2   n
## 1      E1 1000 200
## 2      E2  600 120
## 3      E3  400  80
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
set.seed(123)

muestra <- datos %>%
  group_by(Estrato) %>%
  sample_n(
    size = c(200,120,80)[match(first(Estrato),
                               c("E1","E2","E3"))]
  )

muestra
## # A tibble: 400 × 2
## # Groups:   Estrato [3]
##       ID Estrato
##    <int> <chr>  
##  1   415 E1     
##  2   463 E1     
##  3   179 E1     
##  4   526 E1     
##  5   195 E1     
##  6   938 E1     
##  7   818 E1     
##  8   118 E1     
##  9   299 E1     
## 10   229 E1     
## # ℹ 390 more rows
table(muestra$Estrato)
## 
##  E1  E2  E3 
## 200 120  80