У меня есть кадр данных, содержащий 10 тыс. Строк, для данного столбца X У меня есть дублирующиеся значения. Как мы можем сделать, чтобы выбрать случайное ТОЛЬКО ОДИН РУК, содержащий это значение в этом столбце?Случайный выбор в кадре данных для уникальных строк
ответ
Ваш вопрос не совсем ясен, но я предполагаю, что вы хотите подвыразить весь фрейм данных, сохранив одну (случайно выбранную) строку на «дублированный класс». Что-то вроде
library(plyr)
subsampled_data <- ddply(mydata,.(X),
function(x) {
x[sample(nrow(x),size=1),]
})
Должно работать (не тестировался!)
Мой первый инстинкт был бы что-то вроде элегантного ddply
решения Бена. Однако, зная теперь, что у вас такой большой набор данных, есть, безусловно, более быстрые способы. Вот один, который будет во много раз быстрее, если у вас есть много уникальных значений:
RemoveDups <- function(df, column) {
inds = sample(1:nrow(df))
df = df[inds, ]
dups = duplicated(df[, column])
df = df[!dups, ]
inds = inds[!dups]
df[sort(inds, index=T)$ix, ]
}
имитировать некоторые данные (здесь с множеством уникальных значений):
n.row = 10^6
n.col = 3
set.seed(12345)
data = data.frame(matrix(sample(1000, n.row*n.col, replace=T), nrow=n.row))
Сравните 2 метод:
> system.time(ddply(data, 'X1', function(x) x[sample(nrow(x), size=1), ]))
user system elapsed
3.264 0.921 4.315
> system.time(RemoveDups(data, 'X1'))
user system elapsed
0.375 0.025 0.399
Элегантный! Удивительный, спасибо Джон – Rad
- 1. Выбор определенных строк в кадре данных
- 2. Выбор последовательных строк в кадре данных ... r
- 3. SQL: выбор уникальных строк
- 4. Случайный выбор числа строк
- 5. Случайный выбор на основе переменной в R-кадре данных
- 6. Подсчет уникальных имен в кадре Пандас данных
- 7. Случайный выбор строк в MongoDB async
- 8. R: Выбор строк в кадре данных включает в себя NA
- 9. Выбор и сортировка строк в кадре данных на основе вектора
- 10. выбор уникальных строк в порядке по убыванию
- 11. Связывание строк в кадре данных
- 12. заказа строк в кадре данных
- 13. Создание дополнительных строк в кадре данных в R для уникальных элементов в столбце
- 14. Случайный выбор выборки в кадре данных R, начиная со случайной строки
- 15. Случайный выбор переменных в SQL
- 16. Случайный выбор строк с помощью MySQL
- 17. Случайный выбор уникальных элементов из массива с Javascript
- 18. Случайный выбор строк из набора результатов sql?
- 19. Выбор уникальных строк на основе двух столбцов
- 20. Java случайный выбор строк в файле csv для вывода
- 21. Эффективный способ увеличения количества уникальных точек данных в кадре данных
- 22. Android: случайный выбор строк из массива
- 23. Случайный выбор элемента из массива строк
- 24. Выбор номеров строк для формирования фрейма данных в другом кадре данных
- 25. Случайный выбор взвешенных товаров
- 26. Случайный выбор двумерных векторных строк для полуограничения определенных значений
- 27. Число уникальных значений в диапазоне в кадре данных
- 28. Случайный выбор в JQuery
- 29. Случайный выбор в EarlGrey
- 30. Случайный выбор в Combobox?
Эта интерпретация вопроса OP (загадочного) кажется более вероятной, чем моя, для которой я собирался предложить 'df [sample (which (df $ X == myVal), 1),]'. – joran
Спасибо, ребята, я пробую предложение Бена, Йоран, как это сделать, если я хочу применить это ко всему значению colum, потому что myVal, как было предложено в ваших фрагментах, изменяется вдоль моего столбца X, что означает, что у меня есть сотни из пяти, например, и сотни 8s и т. Д. И т. Д. – Rad
Решение @ Рад Бена справится с этим; мой не будет. Мы истолковали ваш вопрос по-разному. – joran