Анализ данных рейтинга LimeSurvey в R - PullRequest
2 голосов
/ 08 марта 2012

Я использовал LimeSurvey для сбора информации о рейтинге для 8 вариантов среди большого класса студентов. Я экспортировал результаты как CSV, и я получил что-то вроде следующего ...

Team1 Option7 Option4 Option6 Option1 Option2 Option3 Option5 Option8
Team2 Option4 Option3 Option1 Option2 Option7 Option8 Option6 Option5
...

... где рейтинг идет от низшего к высшему (например, Team1 наиболее предпочтительный вариант7). Я пытаюсь превратить это в нечто вроде ...

Option1 Option2 Option3 Option4 Option5 Option6 Option7 Option8
4       5       6       2       7       3       1       8
3       4       2       1       8       7       5       6
...

... как R-образный способ (например, избегая вложенных циклов for и т. П.). Моя конечная цель - генерировать гистограммы для каждого варианта, показывающие, как часто за них голосовали во-первых, во-вторых и т. Д. У меня есть подозрение, что reshape, и это может помочь, но необходимость использовать информацию о «положении» сбивает меня с толку.

Любая помощь с благодарностью!

1 Ответ

1 голос
/ 08 марта 2012
 dat <- read.table(text="Team1 Option7 Option4 Option6 Option1 Option2 Option3 Option5 Option8
     Team2 Option4 Option3 Option1 Option2 Option7 Option8 Option6 Option5")

 cbind( dat[,1,drop=FALSE ], t( apply(dat[ , -1], 1, order) ) )
#     V1 1 2 3 4 5 6 7 8
#1 Team1 4 5 6 2 7 3 1 8
#2 Team2 3 4 2 1 8 7 5 6

Drop = FALSE необходим, чтобы столбец не стал вектором. Транспонирование необходимо, потому что apply возвращает матрицу в главном порядке столбцов.

...