У меня есть фрейм данных с оценкой Ликерта по нескольким аспектам курса (около 40 столбцов оценок Ликерта, как два в приведенных ниже примерах данных).
Не все строки содержат действительные оценки. Действительные результаты 1: 5. Неверные оценки присваиваются 96:99 или просто отсутствуют.
Я хотел бы создать среднюю оценку для каждого отдельного идентификатора для каждого из столбцов удовлетворенности, которая:
1) фильтрует недействительные оценки. ,
2) создает среднее значение действительных баллов для каждого идентификатора.
3) помещает среднюю оценку удовлетворенности для каждого идентификатора в новый столбец с именем [column.name] .mean, как в Skill.satisfaction.mean ниже
Я включил образец фрейма данных ипреобразование фрейма данных, который я хотел бы на одну строку ниже.
####sample score vector
possible.scores <-c(1:5, 96,97, 99,"")
####data frame
ratings <- data.frame(ID = c(rep(1:7, each =2), 8:10), Degree = c(rep("Double", times = 14), rep("Single", times = 3)),
Skill.satisfaction = sample(possible.scores, size = 17, replace = TRUE),
Social.satisfaction = sample(possible.scores, size = 17, replace = TRUE)
)
####transformation applied over one of the satisfaction scales
ratings<- ratings %>%
group_by(ID) %>%
filter(!Skill.satisfaction %in% c(96:99), Skill.satisfaction!="") %>%
mutate(Skill.satisfaction.mean = mean(as.numeric(Skill.satisfaction), na.rm = T))