Tôi có khung dữ liệu chứa 10k hàng, cho cột X đã cho tôi có giá trị được sao chép, Làm cách nào để chọn CHỈ MỘT ROW có chứa giá trị này trong cột này?Chọn ngẫu nhiên trên Khung dữ liệu, đối với các hàng duy nhất
Trả lời
Câu hỏi của bạn không hoàn toàn rõ ràng, nhưng tôi giả sử bạn muốn subsample toàn bộ khung dữ liệu, giữ một hàng (được chọn ngẫu nhiên) cho mỗi "lớp trùng lặp". Một cái gì đó như
library(plyr)
subsampled_data <- ddply(mydata,.(X),
function(x) {
x[sample(nrow(x),size=1),]
})
nên làm việc (chưa được thử nghiệm!)
bản năng đầu tiên của tôi sẽ là một cái gì đó giống như giải pháp thanh lịch ddply
Ben. Tuy nhiên, khi biết rằng bạn có một tập dữ liệu lớn như vậy, chắc chắn có những cách nhanh hơn. Dưới đây là một trong đó sẽ có nhiều thời gian nhanh hơn nếu bạn có nhiều giá trị độc đáo:
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, ]
}
Mô phỏng một số dữ liệu (ở đây với nhiều giá trị duy nhất):
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))
So sánh 2 phương pháp:
> 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
Thanh lịch! Tuyệt vời, Cảm ơn John – Rad
- 1. Lấy mẫu ngẫu nhiên một tỷ lệ phần trăm các hàng trong một khung dữ liệu
- 2. Chọn phần tử ngẫu nhiên từ mảng, nhưng duy nhất
- 3. ngẫu nhiên lựa chọn hàng trong R
- 4. Mẫu ngẫu nhiên của các hàng từ tập hợp con của một khung dữ liệu R
- 5. chọn hai hàng ngẫu nhiên trong cơ sở dữ liệu MySQL
- 6. chọn hàng n ngẫu nhiên qua linq2sql
- 7. Chọn hàng ngẫu nhiên từ bảng mysql
- 8. PHP MySQL chọn hàng ngẫu nhiên
- 9. linq chọn một hàng ngẫu nhiên
- 10. Chọn một tập hợp con ngẫu nhiên duy nhất từ một tập hợp các giá trị duy nhất
- 11. Bảng IE9 có các hàng ngẫu nhiên được bù trừ tại các cột ngẫu nhiên
- 12. MySQL chọn hàng ngẫu nhiên - rand() hiệu suất
- 13. Độc đáo trên một khung dữ liệu chỉ với các cột được chọn
- 14. Cách tạo số "ngẫu nhiên" nhưng cũng "duy nhất"?
- 15. Chọn các số ngẫu nhiên hiệu quả
- 16. Truy vấn MySQL để chỉ định một số ngẫu nhiên duy nhất cho mỗi hàng
- 17. MySQL: Cách truy xuất hàng ngẫu nhiên hoặc nhiều hàng ngẫu nhiên?
- 18. Hoạt động trên các hàng của một khung dữ liệu
- 19. SQL cư bảng với dữ liệu ngẫu nhiên
- 20. Cấu trúc dữ liệu để chọn các phần tử ngẫu nhiên?
- 21. Lựa chọn hàng ngẫu nhiên trong Pandas dataframe
- 22. Chọn hàng ngẫu nhiên từ một bảng sqlite
- 23. B-cây, cơ sở dữ liệu, tuần tự so với chèn ngẫu nhiên và tốc độ. Ngẫu nhiên đang thắng
- 24. Làm thế nào để truy vấn 10 bản ghi ngẫu nhiên duy nhất trong cơ sở dữ liệu mysql?
- 25. Xóa các hàng trong khung dữ liệu với hệ số ""
- 26. Chọn Hàng Ngẫu nhiên từ SQL Sử dụng PHP
- 27. Chọn hàng ngẫu nhiên từ một bảng PostgreSQL với xác suất hàng trọng
- 28. Tạo tập hợp các số ngẫu nhiên duy nhất trong Java
- 29. Thêm đối tượng duy nhất vào Dữ liệu chính
- 30. Làm thế nào để chọn ngẫu nhiên nhiều hàng thỏa mãn các điều kiện nhất định từ một bảng MySQL?
Giải thích về câu hỏi (khó hiểu) của OP dường như có nhiều khả năng hơn câu hỏi của tôi, mà tôi sẽ đề nghị 'df [mẫu (trong đó (df $ X == myVal), 1),]'. – joran
Cảm ơn các bạn, tôi đang thử đề nghị của Ben, Joran, làm thế nào nếu tôi muốn áp dụng điều này cho tất cả giá trị colum vì myVal được đề xuất trong đoạn trích của bạn thay đổi dọc theo cột X của tôi, có nghĩa là tôi có hàng trăm ví dụ và hàng trăm 8s etc etc – Rad
giải pháp @Rad Ben sẽ xử lý điều đó; của tôi sẽ không. Chúng tôi đã giải thích câu hỏi của bạn một cách khác nhau. – joran