Генерация data.frame из таблицы частот - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть синтетические данные в массиве 2 * 4 с 500 наблюдениями:

datax = array(c(120, 181, 50, 43, 41, 33,24,8), dim=c(2,4))
dimnames(datax) = list(gender= c('male', 'female')
                    , punishment = c('None', 'Community_service', 'Youth_prison', 'Normal_prison'))

Я хотел бы получить data.frame из таблицы, которая представляет "источник" таблицы частот.

Я могу представить его через столбец "Freq" (as.data.frame(as.table(datax)), также здесь ), но я хотел бы создать data.frame с 500 строками и 2 столбцами (пол,наказание).

Как бы я это сделал в R?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Попробуйте это:

long <- as.data.frame.table(datax)
longer <- long[rep(1:nrow(long), long$Freq), -3]
0 голосов
/ 20 февраля 2019

Использование dplyr:

as.data.frame.table(datax) %>%
    rowwise() %>%
    do(data.frame(rep(.$gender, .$Freq), .$punishment))

Это создает новую таблицу для каждой строки в ваших данных, повторяя Freq раз, и объединяет их в одну гигантскую таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...