R'deki matris sütunlarında çoğunluk oyu alma
Aug 17 2020
mymat <- structure(c(1, 1, 1, -1, -1, -1, -1, 1, -1, 1, 1, 1, 1, 1, -1
), .Dim = c(3L, 5L))
> mymat
[,1] [,2] [,3] [,4] [,5]
[1,] 1 -1 -1 1 1
[2,] 1 -1 1 1 1
[3,] 1 -1 -1 1 -1
Sütunlarında çoğunluk oyu almak istiyorum mymat
. Bu örnekte, 5 sütun boyunca çoğunluk oyu sonuçları şunlardır: 1 -1 -1 1 1
.
Burada benzer bir sorudan çözümlere bakmayı denedim , ancak içindeki sütunlar mymat
isimsiz olduğu için bu çözümler benim için işe yaramadı.
Yanıtlar
akrun Aug 17 2020 at 22:41
BuradanMode
fonksiyonu kullanabiliriz
Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
ve fonksiyonun sütunsal uygulaması için 2 apply
ile birlikte kullanınMARGIN
apply(mymat, 2, Mode)
#[1] 1 -1 -1 1 1
Veya kullanarak asplit/sapply
sapply(asplit(mymat, 2), Mode)
NOT: Her iki çözüm de genel bir veri kümesi üzerinde çalışır ve yalnızca OP tarafından gösterilen değerlere dayalı değildir.
mymat2 <- cbind(c('A', 'B', 'A'), c('e', 'e', 'f'))
sapply(asplit(mymat2, 2), Mode)
1 27ϕ9 Aug 17 2020 at 22:50
Örnek verilerinizin temsil ettiği türde ikili oylamaya sahipseniz sign()
ve kullanabilirsiniz colSums()
:
sign(colSums(mymat))
[1] 1 -1 -1 1 1
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'