2013-05-29 82 views
0

選擇唯一值我有如下所示以相等的概率

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

我想獲得獨特C1值的數據幀,其中C2可以以相等的概率,如果存在具有相同C1值的多個行選擇。例如,最終結果可以是:

c1 c2 
1 2 
2 2 
3 2 
... 

「c1的每個可能值隨機選擇c2」是我想要的。

+0

更清楚的解釋,以便爲這個問題是可以理解的。 – whuber

+0

哪部分不清楚? –

+2

都不是!請看我對Stefan Wager回覆一些不同的例子,如何解釋這個問題的評論。 – whuber

回答

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

要做什麼?你正在回答什麼版本的這個問題?出現在「c2」的簡單隨機樣本中的「c1」的唯一值集合?爲'c1'的每個可能值隨機選擇'c2'?還有別的嗎? – whuber

+1

「c1的每個可能值隨機選擇c2」是我想要的。 –

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