我有一个类似以下的数据框
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”是我想要的。
答案 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