Verilen bir sütun için 10k satır içeren bir veri çerçevem var X Yinelenen değerlerim var, Bu sütunda bu değeri içeren SADECE BİR ROW'i rastgele seçmek için nasıl yapabiliriz?Veri Çerçevesi'nde rastgele seçim yapın, benzersiz satırlar için
5
A
cevap
6
Sorunuz tamamen açık değil, ancak "yinelenen sınıf" başına bir (rasgele seçilen) satırı koruyarak tüm veri çerçevesini örneklemek istediğinizi varsayalım.
library(plyr)
subsampled_data <- ddply(mydata,.(X),
function(x) {
x[sample(nrow(x),size=1),]
})
gibi bir şey (test edilmemiş!) çalışması yapılmalıdır
6
Benim ilk içgüdüsü Ben'in zarif ddply
çözümü gibi bir şey olurdu. Ancak, artık böyle büyük bir veri setine sahip olduğunuzu bilmek, kesinlikle daha hızlı yollar var.
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, ]
}
(birçok benzersiz değerlere sahip burada) bazı verileri simüle:
> 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
:
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 yöntemler karşılaştırın İşte birçok kat daha hızlı birçok benzersiz değerler varsa olacak biridir
+0
Zarif! Harika, teşekkürler John – Rad
İlgili konular
- 1. Farklı <T> ile genel listelerden rastgele seçim yapın
- 2. olmayan "benzersiz" Satırlar
- 3. Rastgele seçim: Matlab
- 4. MySQL: Değerler listesinden seçim yapın
- 5. jQuery - Değere göre seçim yapın
- 6. Python Tkinter - Radiobutton'da seçim yapın
- 7. Tüm çoğaltmaları NONE'in bir veri çerçevesinde kalması için nasıl kaldırabilirim?
- 8. Değer bir veri çerçevesinde olsun veya olmasın,
- 9. bash bir dosyada benzersiz satırlar bul
- 10. Struts 2 - s: Harita kullanarak seçim yapın
- 11. clojureql iki tarih arasında seçim yapın
- 12. PLSQL Birleştirici dizisinden seçim yapın mı?
- 13. Python rastgele seçim yapmadan önce listeden çıkar
- 14. Codeception ile dinamik bir seçim yapın.
- 15. Bir kaydı tanımlamak için benzersiz rastgele dize oluşturma
- 16. Pandalar: benzersiz veri çerçevesi
- 17. Alternatif satırlar için Bgcolor, jquery
- 18. Bir yineleyici oluşturma ve çeşitli yineleme kaynakları arasından seçim yapın.
- 19. engelle Django DİNLENME çerçevesinde hatayı "alanı benzersiz olmalıdır"
- 20. Varlık veri modeli, benzersiz dizin
- 21. Varlık Çerçevesinde Excel'den veri alma Varlık Yönetimi
- 22. Ecto modeline rastgele ve benzersiz bir alan ekleme
- 23. Satır sırasını bir matris/veri çerçevesinde değiştirme
- 24. Kıvılcım: Aynı OneHotEncoder'ı birden çok veri çerçevesinde kullanın
- 25. Köşeli veri kümeleri iç içe satırlar oluşturuluyor
- 26. TSQL - Birden çok birleşim yolu olan tablodan seçim yapın
- 27. Tablo güncelleniyor, 3 rastgele dizi arasında seçim yapma - nasıl?
- 28. Üstün metin içindeki karınca hedefleri arasında seçim yapın ve geçiş yapın 2
- 29. Python peewee - birden çok tablo arasından seçim yapın
- 30. PostgreSQL işlevi kullanılarak rastgele benzersiz sayı nasıl oluşturulur
OP'nin (şifreli) sorununun bu yorumu benim için daha muhtemel görünüyor, bunun için ben df [sample (hangisi (df $ X == myVal), 1),] 'yi önereceğim. – joran
Teşekkürler, Ben'in önerisini deniyorum, Joran, bunu tüm sütun değerine uygulamak istersem nasıl yapmalıyım? Çünkü parçacıklarınızda önerilen myVal, X sütunum boyunca değişiyor, yani yüzlerce 5 örneğin yüzlerce 8s vs vs – Rad
@Rad Ben'in çözümü; benimki olmaz. Sorunuzu farklı şekilde yorumladık. – joran