2013-05-29 2 views
0

У меня есть кадр данных, как в следующемвыбрать уникальные значения с равной вероятностью

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

Я хочу, чтобы получить уникальное c1 значение, где с2 можно выбрать с равной вероятностью, если имеется несколько строк с одинаковым c1 значения , Например, конечный результат может быть:

c1 c2 
1 2 
2 2 
3 2 
... 

«Случайный выбор c2 для каждого возможного значения c1» это то, что я хочу.

+0

Более четкое объяснение необходимо для того, чтобы этот вопрос, чтобы быть понятным. – whuber

+0

какая часть непонятна? –

+2

Ничего! Пожалуйста, см. Мой комментарий к ответу Стефана Уэйгера для некоторых разных примеров того, как это можно интерпретировать. – 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

Что делать? Какую версию этого вопроса вы отвечаете? Набор уникальных значений 'c1', который появляется в простой случайной выборке' c2'? Случайный выбор 'c2' для каждого возможного значения' c1'? Что-то другое? – whuber

+1

«Случайный выбор c2 для каждого возможного значения c1» - это то, что я хочу. –

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 
Смежные вопросы