R'deki bir data.frame içindeki tüm benzersiz faktör kombinasyonları için özet istatistikler nasıl bulunur? [kapalı]


11

Ben data.frame faktörlerin her benzersiz kombinasyonu için bir data.frame bir değişkenin bir özetini hesaplamak istiyorum. Bunu yapmak için plyr kullanmalı mıyım? Ben uygulamak () aksine döngüler kullanarak Tamam; bu yüzden her bir benzersiz kombinasyonu bulmak yeterli olacaktır.


1
Eşsiz faktör kombinasyonları hakkında sorduğunuzda soru sormak yanıltıcıdır ve daha sonra benzersiz kombinasyonlarla özet hakkında ayrıntılı olarak soruyorsunuz.
Wojtek

Yanıtlar:


7

aggregateMuhtemelen aradığınız çözüm olduğunu düşünüyorum , ancak tüm olası faktör kombinasyonlarının açık bir listesini oluşturmak istiyorsanız, bunu sizin için expand.gridyapacak. Örneğin

> expand.grid(height = seq(60, 80, 5), weight = seq(100, 300, 50),
             sex = c("Male","Female"))
       height weight    sex
1      60    100   Male
2      65    100   Male
... 
30     80    100 Female
31     60    150 Female

Daha sonra, orijinal verilerinizdeki kayıtları çıkarmak için, sonuçlanan veri çerçevesindeki her bir satırın üzerinden geçebilirsiniz.


11

Bkz aggregateve by. Örneğin, aşağıdakiler için yardım dosyasından aggregate:

## Compute the averages according to region and the occurrence of more
## than 130 days of frost.
aggregate(state.x77,
      list(Region = state.region,
           Cold = state.x77[,"Frost"] > 130),
      mean)

1
hızlı çalışan doğru cevap
John

3

Birden fazla özet istatistik döndürme ve uzun hesaplamalar için bir ilerleme çubuğu üretme avantajına sahip olan plyr çözümü:

library(ez) #for a data set
data(ANT)
cell_stats = ddply(
    .data = ANT #use the ANT data
    , .variables = .(cue,flanker) #uses each combination of cue and flanker
    , .fun = function(x){ #apply this function to each combin. of cue & flanker
        to_return = data.frame(
            , acc = mean(x$acc)
            , mrt = mean(x$rt[x$acc==1])
        )
        return(to_return)
    }
    , .progress = 'text'
)

Teşekkür ederim! Data.frame çağrısında virgül bırakmak zorunda kalmama rağmen bu işe yaradı. stats = ddply (.data = ords, .variables =. (Sembol, SysID, Saat), .fun = işlev (x) {to_return = veri çerçevesi (s = toplam (x Kar) ) return (to_return)}, .progress = 'text')PrÖfbent),m=mebirn(x

1

Diğer önerilere ek olarak describe.by(), psychpaketteki işlevi yararlı bulabilirsiniz. Bir faktör değişkeninin seviyeleri arasındaki sayısal değişkenlere ilişkin özet istatistikleri göstermek için kullanılabilir.


1

Ben şahsen cast(), basitlik nedeniyle yeniden şekillendirme paketinden:

library(reshape)
cast(melt(tips), sex ~ smoker | variable, c(sd,mean, length))

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.