我有一个如下的数据框
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”是我想要的。
这是一个简单的方法。假设您的数据框称为 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);
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