0

我有一个如下的数据框

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”是我想要的。

4

2 回答 2

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);
于 2013-05-29T19:24:20.530 回答
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
于 2013-05-31T09:20:22.997 回答