Применить функцию, чтобы создать среднее значение для отфильтрованных столбцов по нескольким столбцам. - PullRequest
1 голос
/ 07 ноября 2019

У меня есть фрейм данных с оценкой Ликерта по нескольким аспектам курса (около 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))

1 Ответ

1 голос
/ 07 ноября 2019
library(dplyr)
ratings %>% 
        group_by(ID) %>% 
        #Change satisfaction columns from factor into numeric
        mutate_at(vars(-ID,-Degree), list(~as.numeric(as.character(.)))) %>%
        #Get mean for values in 1:5 
        mutate_at(vars(-ID,-Degree), list(mean=~mean(.[. %in% 1:5], na.rm = T)))

# A tibble: 6 x 6
# Groups:   ID [3]
     ID Degree Skill.satisfaction Social.satisfaction Skill.satisfaction_mean Social.satisfaction_mean
  <int> <fct>               <dbl>               <dbl>                   <dbl>                    <dbl>
1     1 Double                 96                  99                       2                      NaN
2     1 Double                  2                  97                       2                      NaN
3     2 Double                  1                  97                       1                      NaN
4     2 Double                 97                  NA                       1                      NaN
5     3 Double                 96                  96                     NaN                        3
6     3 Double                 99                   3                     NaN                        3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...