如何顺序测量比例?

时间:2019-06-12 12:09:49

标签: r

我正在尝试评估某些招聘策略的回应率。 招募发生了30多波。对于每一波,都向潜在的参与者发送了邀请函,他们可以回答“是”或“否”。有时,这些主题不会回答邀请,而是会收到提醒函,可以用类似的方式回答。他们最多会收到3条提醒。

我的数据集为每个提醒设置了一个变量,其值为0和1。

因此,如果某个参与者仅收到邀请(并回答“是或否”),则他/她将被赋予值“ 0”(第一提醒),“ 0”(第二提醒)和“ 0”(第三提醒) 。

我正在尝试在收到邀请或第一个提醒或第二个提醒等之后测量响应率(说是的人)。

这表示在邀请函之后说“是”的人/所有收到邀请函的人(基本上是所有人)。在第一个提醒之后说“是”的人/所有收到第一个提醒的人(无论他们是否收到第二个提醒,并减去对邀请函说“是”或“否”的人)。

我的数据集看起来像这样:

ID wave participate freminder sreminder treminder 
   267  1       yes        0          0          0
   312  1       no         0          0          0
   516  29      yes        1          1          1

我创建了一个新变量“ Group”

datnakwtele$group[which( datnakwtele$freminder == "0" )] <-1
datnakwtele$group[which(datnakwtele$freminder == "1" & datnakwtele$sreminder == "0" )] <- 2
datnakwtele$group[which( datnakwtele$freminder == "1" & datnakwtele$sreminder >= "1" & datnakwtele$treminder == "0"  )] <- 3
datnakwtele$group[which( datnakwtele$freminder == "1" & datnakwtele$sreminder >= "1" & datnakwtele$treminder >= "1" )] <- 4

然后我做到了

dplyr::group_by(wave,group,participate) %>%
dplyr::summarise (n = n()) %>%
dplyr::mutate(Percentage = (((n/ sum(n)*100))))
 ```

But my Output only (for example) Shows People that said yes after the first Invitation / People that only responded to the first Invitation (and not everyone that received it)


```wave  group participate     n Percentage
1 1     1     yes             64      50.4 
2 1     1     no              63      49.6 
3 1     2     yes             32      36.4 
4 1     2     no              55      62.5 
6 1     3     yes             11      18.6 

让我们说100个人收到了邀请,有5个主题回答是,另外5个主题回答不是。响应率应为5/100,而不是5/10。 90位受试者没有回应,并收到了第一个提醒,其中5位表示是,5位表示否。第一次提醒的回复率为5/90(回答邀请的100人)

1 个答案:

答案 0 :(得分:0)

编辑号3,我想我现在遇到了问题


这可能是解决方案吗?

library(tidyverse)

data <- tibble(ID = sample(letters,100, T), 
               wave = sample(1:30, 100, T),
               answer = sample(c('yes', 'no'),100,T),
               freminder = rbinom(100,1,.5),
               sreminder = rbinom(100,1,.5),
               treminder = rbinom(100,1,.5))
# group as sum
data$group <- data  %>% select(freminder, sreminder, treminder) %>% rowSums()

# split into seperate wave-sets
spData <- split(data, data$wave)

# define what to to per wave
returnFreqs <- function(wave){
  tab <- table(wave$group, wave$answer)
  num <- rev(cumsum(rev(rowSums(tab))))
  list(absFreq = tab,
       relFreq = sweep(tab,
                       MARGIN = 1,
                       STATS = num,
                       FUN = '/'))
}

allTabs <- lapply(spData, returnFreqs)

allTabs中创建以下输出:

#> $`2`
#> $`2`$absFreq
#>    
#>     no yes
#>   1  1   0
#>   2  1   0
#>   3  1   1
#> 
#> $`2`$relFreq
#>    
#>            no       yes
#>   1 0.2500000 0.0000000
#>   2 0.3333333 0.0000000
#>   3 0.5000000 0.5000000
#> 
#> 
#> $`3`
#> $`3`$absFreq
#>    
#>     no yes
#>   1  1   0
#>   2  2   2
#> 
#> $`3`$relFreq
#>    
#>      no yes
#>   1 0.2 0.0
#>   2 0.5 0.5
#> 
#> 
#> $`4`
#> $`4`$absFreq
#>    
#>     no
#>   1  1
#> 
#> $`4`$relFreq
#>    
#>     no
#>   1  1
#> 
#> 
#> $`5`
#> $`5`$absFreq
#>    
#>     no yes
#>   1  1   0
#>   2  2   1
#>   3  1   0
#> 
#> $`5`$relFreq
#>    
#>       no  yes
#>   1 0.20 0.00
#>   2 0.50 0.25
#>   3 1.00 0.00
#> 
#> 
#> $`6`
#> $`6`$absFreq
#>    
#>     no
#>   1  1
#> 
#> $`6`$relFreq
#>    
#>     no
#>   1  1
#> 
#> 
#> $`7`
#> $`7`$absFreq
#>    
#>     yes
#>   0   1
#>   2   1
#> 
#> $`7`$relFreq
#>    
#>     yes
#>   0 0.5
#>   2 1.0
#> 
#> 
#> $`8`
#> $`8`$absFreq
#>    
#>     no yes
#>   1  0   1
#>   2  1   1
#> 
#> $`8`$relFreq
#>    
#>            no       yes
#>   1 0.0000000 0.3333333
#>   2 0.5000000 0.5000000
#> 
#> 
#> $`9`
#> $`9`$absFreq
#>    
#>     no yes
#>   1  0   1
#>   2  2   0
#> 
#> $`9`$relFreq
#>    
#>            no       yes
#>   1 0.0000000 0.3333333
#>   2 1.0000000 0.0000000
#> 
#> 
#> $`10`
#> $`10`$absFreq
#>    
#>     no yes
#>   1  0   1
#>   2  2   0
#> 
#> $`10`$relFreq
#>    
#>            no       yes
#>   1 0.0000000 0.3333333
#>   2 1.0000000 0.0000000
#> 
#> 
#> $`11`
#> $`11`$absFreq
#>    
#>     no yes
#>   0  0   1
#>   1  1   1
#>   3  1   0
#> 
#> $`11`$relFreq
#>    
#>            no       yes
#>   0 0.0000000 0.2500000
#>   1 0.3333333 0.3333333
#>   3 1.0000000 0.0000000
#> 
#> 
#> $`12`
#> $`12`$absFreq
#>    
#>     no yes
#>   2  1   1
#>   3  0   1
#> 
#> $`12`$relFreq
#>    
#>            no       yes
#>   2 0.3333333 0.3333333
#>   3 0.0000000 1.0000000
#> 
#> 
#> $`13`
#> $`13`$absFreq
#>    
#>     no yes
#>   2  0   1
#>   3  1   0
#> 
#> $`13`$relFreq
#>    
#>      no yes
#>   2 0.0 0.5
#>   3 1.0 0.0
#> 
#> 
#> $`14`
#> $`14`$absFreq
#>    
#>     no yes
#>   1  1   2
#>   2  1   2
#> 
#> $`14`$relFreq
#>    
#>            no       yes
#>   1 0.1666667 0.3333333
#>   2 0.3333333 0.6666667
#> 
#> 
#> $`15`
#> $`15`$absFreq
#>    
#>     yes
#>   0   2
#>   1   1
#> 
#> $`15`$relFreq
#>    
#>           yes
#>   0 0.6666667
#>   1 1.0000000
#> 
#> 
#> $`16`
#> $`16`$absFreq
#>    
#>     no yes
#>   0  0   1
#>   1  1   1
#>   2  1   1
#>   3  1   0
#> 
#> $`16`$relFreq
#>    
#>            no       yes
#>   0 0.0000000 0.1666667
#>   1 0.2000000 0.2000000
#>   2 0.3333333 0.3333333
#>   3 1.0000000 0.0000000
#> 
#> 
#> $`17`
#> $`17`$absFreq
#>    
#>     yes
#>   0   1
#> 
#> $`17`$relFreq
#>    
#>     yes
#>   0   1
#> 
#> 
#> $`18`
#> $`18`$absFreq
#>    
#>     no yes
#>   2  1   1
#> 
#> $`18`$relFreq
#>    
#>      no yes
#>   2 0.5 0.5
#> 
#> 
#> $`19`
#> $`19`$absFreq
#>    
#>     no yes
#>   0  0   1
#>   2  1   1
#> 
#> $`19`$relFreq
#>    
#>            no       yes
#>   0 0.0000000 0.3333333
#>   2 0.5000000 0.5000000
#> 
#> 
#> $`20`
#> $`20`$absFreq
#>    
#>     yes
#>   0   1
#>   3   1
#> 
#> $`20`$relFreq
#>    
#>     yes
#>   0 0.5
#>   3 1.0
#> 
#> 
#> $`21`
#> $`21`$absFreq
#>    
#>     no
#>   2  2
#> 
#> $`21`$relFreq
#>    
#>     no
#>   2  1
#> 
#> 
#> $`22`
#> $`22`$absFreq
#>    
#>     no yes
#>   0  0   1
#>   1  2   1
#>   2  1   1
#>   3  0   2
#> 
#> $`22`$relFreq
#>    
#>            no       yes
#>   0 0.0000000 0.1250000
#>   1 0.2857143 0.1428571
#>   2 0.2500000 0.2500000
#>   3 0.0000000 1.0000000
#> 
#> 
#> $`23`
#> $`23`$absFreq
#>    
#>     yes
#>   2   1
#> 
#> $`23`$relFreq
#>    
#>     yes
#>   2   1
#> 
#> 
#> $`24`
#> $`24`$absFreq
#>    
#>     no yes
#>   2  1   3
#>   3  1   1
#> 
#> $`24`$relFreq
#>    
#>            no       yes
#>   2 0.1666667 0.5000000
#>   3 0.5000000 0.5000000
#> 
#> 
#> $`25`
#> $`25`$absFreq
#>    
#>     no yes
#>   1  2   0
#>   2  2   1
#> 
#> $`25`$relFreq
#>    
#>            no       yes
#>   1 0.4000000 0.0000000
#>   2 0.6666667 0.3333333
#> 
#> 
#> $`26`
#> $`26`$absFreq
#>    
#>     no yes
#>   2  2   1
#> 
#> $`26`$relFreq
#>    
#>            no       yes
#>   2 0.6666667 0.3333333
#> 
#> 
#> $`27`
#> $`27`$absFreq
#>    
#>     no yes
#>   1  0   3
#>   2  2   0
#> 
#> $`27`$relFreq
#>    
#>      no yes
#>   1 0.0 0.6
#>   2 1.0 0.0
#> 
#> 
#> $`28`
#> $`28`$absFreq
#>    
#>     no yes
#>   1  1   0
#>   2  0   1
#> 
#> $`28`$relFreq
#>    
#>      no yes
#>   1 0.5 0.0
#>   2 0.0 1.0
#> 
#> 
#> $`29`
#> $`29`$absFreq
#>    
#>     no yes
#>   0  1   0
#>   1  1   2
#> 
#> $`29`$relFreq
#>    
#>            no       yes
#>   0 0.2500000 0.0000000
#>   1 0.3333333 0.6666667
#> 
#> 
#> $`30`
#> $`30`$absFreq
#>    
#>     no yes
#>   0  0   1
#>   2  2   1
#>   3  1   0
#> 
#> $`30`$relFreq
#>    
#>       no  yes
#>   0 0.00 0.20
#>   2 0.50 0.25
#>   3 1.00 0.00