Среднее значение категориальных переменных из пакета plyr - PullRequest
0 голосов
/ 22 апреля 2020

Моя категориальная переменная, у риска есть три группы: ADV, HHM и POV

Я хочу получить среднее значение этих трех групп для четырех непрерывных переменных read.5, read.6, read.7 и read.8, которые читают десятки людей от 5 до 8

, что является ,2:5 моего набора данных, и это старый пример из учебника. Я использовал приведенный ниже код, который, по-видимому, неверен, хотя он должен быть верным в соответствии с примером texbook:

myrisk <- ddply(.data = MPLS[ ,2:5], .variables = .(MPLS$risk),
                .fun = mean, na.rm = TRUE)

У меня ранее было сообщение об ошибке для фрагмента кода:

mymeans <- mean(MPLS[ ,2:5], na.rm = TRUE)

, который, когда я его погуглил, изменил программное обеспечение R, и мне пришлось искать другое, чтобы найти способ.

Мои вопросы:

  1. Является ли функция ddply, которую я пытаюсь использовать в настоящее время, из пакета plyr заменена так же, как и старая функция средних значений?

  2. Как получить среднее значение категориальная переменная из четырех столбцов? Будь с той же функцией или с чем-то другим?

Спасибо

1 Ответ

0 голосов
/ 22 апреля 2020

Привет, вы можете использовать dplyr - это более актуально.

 df<-data.frame(risk= rep(c("ADV","HHM","POV"),10),
                read.5= rnorm(30,30),
                read.4= rnorm(30,30),
                read.3= rnorm(30,30),
                read.2= rnorm(30,30))
> head(df)
#  risk   read.5   read.4   read.3   read.2
#1  ADV 30.78281 30.00721 29.80906 29.25936
#2  HHM 29.76175 29.63864 29.39256 29.40070
#3  POV 29.00964 30.48258 29.20662 28.77509
#4  ADV 29.60631 30.35032 32.00376 30.70374
#5  HHM 31.38653 30.28896 29.48756 30.32430
#6  POV 30.33102 30.40897 29.55796 30.10585

library(dplyr)

df %>% group_by(risk) %>% summarise_all(mean)

# A tibble: 3 x 5
#  risk  read.5 read.4 read.3 read.2
#  <fct>  <dbl>  <dbl>  <dbl>  <dbl>
1 ADV     30.3   30.2   30.2   30.4
2 HHM     29.7   30.5   29.8   29.9
3 POV     29.3   30.2   29.9   30.2




...