在transmute中动态创建变量

时间:2015-10-09 15:15:29

标签: r dplyr

作为模拟的一部分,我得到一个输出,告诉我在每个迭代(列)的每个周期(行)中选择了哪个选项。我想要的输出是一个新的数据框,它告诉我在每个周期中(即跨越迭代)选择每个选项的时间比例。

我的代码适用于特定数量的选项(请参阅下面的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

0 个答案:

没有答案