2012-06-08 8 views
-2

Я являюсь пользователем Excel, пытающимся перенести некоторые из моих обычных задач по представлению данных на R. Одна из самых мощных функций в Excel - возможность поворота и сортировки данных. Я знаю, что эти функции есть функции в R, но я не уверен, как написать код для решения этой конкретной проблемы группировки и сортировки.Группировка и сортировка по R

В принципе, с помощью RI хотел бы взять набор данных, который выглядит следующим образом:

Simple Data Set

И превратить его выглядеть следующим образом:

Pivoted Data Set

Обратите внимание, что окончательная таблица группирует точки по команде, а затем сортирует сводные данные по количеству баллов. Изучение того, как сделать это в R, было бы огромной экономией времени.

Заранее благодарим за помощь!

+0

SO не является «gimme the codez».Попытайтесь что-нибудь и вернитесь с вопросом о том, что вы написали. – CAbbott

+0

Помимо других комментариев (с которыми я согласен), это действительно ужасный формат для финальной таблицы ... –

ответ

3

Две функции, которые вам понадобятся ... после того, как у вас есть пример ... xtabs и ftable. Сначала мы преобразуем существующую таблицу в фреймворк данных, а затем отметим, что счетчики теперь находятся в переменной с именем «Freq». Затем мы вновь табулирования до меньшего числа измерений:

> Tdf <- as.data.frame(Titanic, stringsAsFactors=FALSE) 
> str(Tdf) 
'data.frame': 32 obs. of 6 variables: 
$ Class : chr "1st" "2nd" "3rd" "Crew" ... 
$ Sex  : chr "Male" "Male" "Male" "Male" ... 
$ Age  : chr "Child" "Child" "Child" "Child" ... 
$ Survived: chr "No" "No" "No" "No" ... 
$ Freq : num 0 0 35 0 0 0 17 0 118 154 ... 

> ftable(xtabs(Freq ~ Class+Sex, Tdf) , row.vars=c("Class", "Sex")) 
Class Sex   
1st Female 145 
     Male 180 
2nd Female 106 
     Male 179 
3rd Female 196 
     Male 510 
Crew Female 23 
     Male 862 

Я не получил очень много очков за это, но я в свое время продемонстрировать на SO, как сделать промежуточные суммы и общие итоги:

R: calculating column sums & row sums as an aggregation from a dataframe

2

Во-первых, добро пожаловать в R и SO. Вы обнаружите, что вы получите лучшие ответы, если вы будете следовать рекомендациям здесь для размещения вопросов:

How to make a great R reproducible example?

Вы можете сделать то, что вы просите в ряде направлений.

Во-первых, вам необходимо использовать функцию sum по каждой группе, созданную c(Team,Player). Есть несколько способов сделать это:

  • by в базе R, плюс as.data.frame.by в taRifx пакете
  • ddply в plyr пакете

Затем взять полученный вывод и сортировать его (опять же, много способов сделать это):

  • sort в taRifx пакет
  • arrange в plyr пакете

Поскольку это звучит, как вы будете делать это много, я настоятельно рекомендую создать свою собственную функцию, которая выполняет два шага именно так, как вы хотите как автоматически. Затем вы можете поместить эту функцию в свой .Rprofile или в пакет, чтобы он всегда был доступен.

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