基于R

时间:2017-03-22 10:41:48

标签: r random

这可能很简单,但我无法根据数据库中的变量找到一种方法。这是一个例子:

df <- data.frame(matrix(rnorm(24), nrow=12))
df$color <-  factor(rep(c("blue", "red", "yellow", "pink"), each=3))

给出:

         X1     X2  color
 1  -0.1835 -0.664   blue
 2  -1.2774 -0.564   blue
 3   1.6395  0.952   blue
 4  -0.3831  0.136    red
 5   1.2142  0.652    red
 6   0.5675  1.435    red
 7  -0.0565  0.364 yellow
 8  -1.8347  2.511 yellow
 9  -0.6089  0.470 yellow
 10 -1.0594  1.344   pink
 11 -0.1610 -0.540   pink
 12 -1.0791 -0.706   pink

我想随机选择一个颜色子集,并创建一个新的data.frame,包括具有所选颜色的所有观察。可能的解决方案如下(我选择两种颜色)

df[df$color %in% sample(levels(df$color),2),]

并获得:

        X1     X2 color
 4  -0.383  0.136   red
 5   1.214  0.652   red
 6   0.567  1.435   red
 10 -1.059  1.344  pink
 11 -0.161 -0.540  pink
 12 -1.079 -0.706  pink

但我正在寻找替代方法(用于非常大的数据库)

0 个答案:

没有答案