Як знайти підсумкову статистику для всіх унікальних комбінацій факторів у data.frame в R? [зачинено]


11

Я хочу обчислити підсумок змінної у data.frame для кожної унікальної комбінації факторів у data.frame. Чи варто використовувати для цього plyr? Я все в порядку з використанням циклів на відміну від apply (); тому достатньо лише з’ясувати кожну унікальну комбінацію.


1
Питання вводить в оману, коли ви запитуєте про унікальні поєднання факторів, а потім детально запитуєте про резюме за унікальними комбінаціями.
Войтек

Відповіді:


7

Хоча я думаю, що aggregateце, мабуть, рішення, яке ви шукаєте, якщо ви хочете створити чіткий список усіх можливих комбінацій факторів, expand.gridце зробить для вас. напр

> 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

Потім ви можете перевести цикл на кожен рядок у отриманому кадрі даних, щоб витягнути записи з початкових даних.


11

Дивіться aggregateі by. Наприклад, з довідкового файлу для 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
найшвидший правильний відповідь
Джон

3

Ось рішення plyr, яке має перевагу повернення декількох зведених статистичних даних та створення рядка прогресу для довгих обчислень:

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'
)

Пrоfiт),м=меан(х

1

Окрім інших пропозицій, describe.by()функція в psychпакеті може бути корисною. Він може бути використаний для відображення підсумкової статистики числових змінних через рівні факторної змінної.


1

Мені особисто подобається cast(), що з пакету переформатування через його простоту:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.