Я работаю над набором данных, который выглядит следующим образом.
#Dataframe
df=data.frame(Type=c(1,2,4,5,4,3,3,4,5,1,2,3,2,1,2,3,3,2,1,1,NA),
Q1=c(1,2,6,8,9,10,2,6,7,4,9,9,1,2,NA,4,3,8,7,6,4),
Q2=c(1,2,4,NA,8,2,1,2,10,7,5,5,5,8,2,7,4,8,7,5,1))
Контекст
Кадр данных состоит из результатов вопросника.
В первом столбце Type
указывается тип сотрудника, ответившего на вопросник, где 1 = 'Worker
', 2 = 'Factory Lead
', 3 = 'Administrative Staff
', 4 = 'Middle Management
'& 5 =' Executive
'
Второй и третий столбцы (Q1
& Q2
) - это вопросы, оцениваемые по шкале от 1 =' Strongly Agree
'до 10 (Strongly Disagree
).
Что я пытаюсь достичь
Я хотел бы рассчитать общее количество ответов на Type
на основе оценки.Я создал бункеры для результатов, и они -
1) Low
Соглашение - баллы от 0 до 4
2) Medium
Соглашение - баллы 5 или 6
3) High
Соглашение - Баллы 7 или 8
4) Very High
Соглашение - Баллы 9 или 10
Так что я бы хотел посчитать количествоответов на одного работника на каждый бин.
Моя попытка
library(dplyr)
library(tidyr)
result=df %>%
gather(Item,response,-1) %>%
filter(!is.na(response)) %>%
group_by(Type,Item) %>%
filter(!is.na(Type)) %>%
summarise(Low=sum(response %in% c(0,1,2,3,4)),
Medium=sum(response %in% c(5,6)),
High=sum(response %in% c(7,8)),
VHigh=sum(response %in% c(9,10)) %>%
spread(Type,-Item)
Моя логика заключается в том, что я использую библиотеку tidyr
и первые gather
баллы для вычисления общего количества ответов,Затем распределите столбцы так, чтобы у меня были промежуточные итоги по работникам и категориям оценок.
Например, для Q1, столбец для итоговых ответов для Low-Worker
, затем Medium-Worker
, затем High-Worker
, затем Very High-Worker
, затем Low-Factory Lead
, затем Medium-Factory Lead
.... и т. д. для всех комбинаций сотрудников и категорий баллов.
Очевидно, что-то не так в моем коде.
Желаемый результат
Кадр данных с двумя строками (Q1
& Q2
) и 20 столбцами (для каждого сотрудника)комбинация))
Любая помощь по этому вопросу будет высоко оценен.