Как изменить столбец, содержащий фактор для каждого объекта в кадре данных? - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть набор данных, который в основном является ответом на вопросник PHQ-9.Где есть 9 столбцов, которые имеют факторы «Совсем нет», «Иногда», «Несколько дней», «Больше половины дней», «Почти каждый день».Баллы которых равны 0, 1, 1, 2, 3 соответственно.Ответ на все 9 вопросов, наконец, дает оценку PHQ из 27.

В моем наборе данных, однако, ответы на эти вопросы хранятся как:

$ Процент: Факторс 5 уровнями «Больше половины дней», ..: 1 4 2 2 4 5 4 4 4 5 ...

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

Это вывод, который я смотрю:

Interest    I_Factor Pleasure        P_factor  Score 
Not at all    0      Nearly Everyday  2          2

1 Ответ

0 голосов
/ 28 ноября 2018

Создание имитированного фрейма данных для вас:

df <- data.frame(id = c("001", "002", "003", "004", "005"),
             PHQ_1 = c("Not at all", "Not at all", "Sometimes", "Sometimes", "Several Days"),
             PHQ_2 = c("Sometimes", "Sometimes", "Several Days", "More than half the days", "Nearly everyday"))

Использование mutate_at для выбора элементов анкеты, а затем массовое применение recode из пакета psych для изменения шкал Ликерта сфакторы числовые.Задавая «имя» для новых столбцов, и они не заменят старые столбцы (например, «numeric_columns» в приведенном ниже примере).

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

library(dplyr)
library(psych)

test <- df %>%
  mutate_at(vars(PHQ_1:PHQ_2), funs(numeric_columns = recode(., 
                                       "Not at all" = 0,
                                       "Sometimes" = 1,
                                       "Several Days" = 1,
                                       "More than half the days" = 2,
                                       "Nearly everyday" = 3))) %>%
  mutate(total = rowSums(select(., contains("numeric_columns"))))

Пример вывода следующий.Исходные столбцы сохраняются, и у вас есть новые столбцы в числовом формате, а также общий балл анкеты.

   id        PHQ_1                   PHQ_2 PHQ_1_numeric_columns PHQ_2_numeric_columns total
1 001   Not at all               Sometimes                     0                     1     1
2 002   Not at all               Sometimes                     0                     1     1
3 003    Sometimes            Several Days                     1                     1     2
4 004    Sometimes More than half the days                     1                     2     3
5 005 Several Days         Nearly everyday                     1                     3     4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...