作为模拟的一部分,我得到一个输出,告诉我在每个迭代(列)的每个周期(行)中选择了哪个选项。我想要的输出是一个新的数据框,它告诉我在每个周期中(即跨越迭代)选择每个选项的时间比例。
我的代码适用于特定数量的选项(请参阅下面的5个选项)。但是,选项的数量会随着模拟而变化,所以我想知道是否有一种方法可以在transmute中编辑部件来为O1到On创建变量,其中n = max(df)
。
library(dplyr)
set.seed(100)
df <- sample(1:5, 50, replace=T) %>% matrix(ncol=5) %>% data.frame()
#> X1 X2 X3 X4 X5
#> 1 2 4 3 3 2
#> 2 2 5 4 5 5
#> 3 3 2 3 2 4
#> 4 1 2 4 5 5
#> 5 3 4 3 4 4
#> 6 3 4 1 5 3
#> 7 5 2 4 1 4
#> 8 2 2 5 4 5
#> 9 3 2 3 5 2
#> 10 1 4 2 1 2
props <- df %>%
transmute(period = 1:nrow(.),
O1 = rowMeans(.==1),
O2 = rowMeans(.==2),
O3 = rowMeans(.==3),
O4 = rowMeans(.==4),
O5 = rowMeans(.==5))
#> period O1 O2 O3 O4 O5
#> 1 1 0.0 0.4 0.4 0.2 0.0
#> 2 2 0.0 0.2 0.0 0.2 0.6
#> 3 3 0.0 0.4 0.4 0.2 0.0
#> 4 4 0.2 0.2 0.0 0.2 0.4
#> 5 5 0.0 0.0 0.4 0.6 0.0
#> 6 6 0.2 0.0 0.4 0.2 0.2
#> 7 7 0.2 0.2 0.0 0.4 0.2
#> 8 8 0.0 0.4 0.0 0.2 0.4
#> 9 9 0.0 0.4 0.4 0.0 0.2
#> 10 10 0.4 0.4 0.0 0.2 0.0