以相同的概率选择唯一值

时间:2013-05-29 18:42:20

标签: r sampling

我有一个类似以下的数据框

c1 c2
1 2
1 3
2 4
2 5
2 2
3 1
3 2
...

我想获得唯一的c1值,其中如果有多个行具有相同的c1值,则可以以相等的概率选择c2。例如,最终结果可以是:

c1 c2
1 2
2 2
3 2
...

“c1的每个可能值随机选择c2”是我想要的。

2 个答案:

答案 0 :(得分:1)

这是一种简单的方法。假设您的数据框名为df。

x = unique(df$c1);
y = sapply(x, function(arg)sample(df$c2[df$c1 == arg], 1));
new_df = data.frame(c1 = x, c2 = y);

答案 1 :(得分:0)

以下是为c2的每个唯一值抽取c1值的简便方法:

aggregate(c2 ~ c1, dat, sample, 1) # dat is the name of you data frame

  c1 c2
1  1  2
2  2  4
3  3  1