2016-05-15 3 views
0

Для образца data.frame:Изменения порядка в xtab

df <- structure(list(region = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 
              2L, 2L, 2L, 2L), .Label = c("a", "b", "c", "d"), class = "factor"), 
        result = c(0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L), weight = c(0.126, 
                         0.5, 0.8, 1.5, 5.3, 2.2, 3.2, 1.1, 0.1, 1.3, 2.5)), .Names = c("region", 
                                         "result", "weight"), row.names = c(NA, 11L), class = "data.frame") 

df$region <- factor(df$region) 
result <- xtabs(weight ~ region + result, data=df) 
result 

Как бы я идти об изменении порядка в xtab (я не хочу, чтобы переключать ось, которые я ранее заданный)? Например, обеспечение 1 всегда было первым result или b было первым регионом.

Если у кого-то есть идеи, я был бы признателен. Я делаю некоторые последующие статистические данные по этим данным, и мне нужно, чтобы мои ценности были правильными.

ответ

3

Попробуйте следующее, используя relevel, который сбрасывает базовый уровень фактора:

df$region <- relevel(df$region, "b") 
xtabs(weight ~ region + result, data=df) 

Возможно, лучший способ сделать это, если Вы хотите заказать несколько уровней, чтобы настроить их изначально при первом использовании factor:

df$region2 <- df$region <- factor(df$region, levels=c("b", "c", "a")) 

или любой другой порядок, который вы хотите.

+0

Thanks @Imo. Как лучше всего иметь дело с числовым столбцом «результат»? Очевидно, что скребок работает только с фактор-переменными? Должен ли я преобразовать это в фактор или есть более простой способ? –

+0

Если ваша цель - использовать эту переменную для табулирования, то это то, что я бы рекомендовал. Если ваш набор данных не очень большой, вы можете создать переменную фактора выброса специально для этой задачи. – lmo

Смежные вопросы