Как создать новую среднюю переменную, для которой у меня есть три значения в отдельных строках? - PullRequest
0 голосов
/ 21 сентября 2018

Мои данные выглядят так

     subject treatment time outcome1 outcome2 
1       1         a    1       80       15
2       1         a    2       75       14
3       1         a    3       74       12
4       2         b    1       90       16
5       2         b    2       81       15
6       2         b    3       76       15

Я хотел бы создать новую переменную, которая является средним значением значений result1 во время 1, 2, 3. Я хотел бы сделать это для всех предметов (40).Затем я хотел бы сделать это для результата 2 до результата 22.

Я пробовал это

data <- data %>% 
group_by(subject) %>% 
summarise(mkcal = mean(kcal))

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

Спасибо за чтение.

1 Ответ

0 голосов
/ 21 сентября 2018

Использование dplyr:

df %>%
  group_by(subject) %>%
  mutate_at(vars(contains("outcome")), funs(mean = mean(., na.rm = TRUE)))

# A tibble: 6 x 7
# Groups:   subject [2]
  subject treatment  time outcome1 outcome2 outcome1_mean outcome2_mean
    <int> <fct>     <int>    <int>    <int>         <dbl>         <dbl>
1       1 a             1       80       15          76.3          13.7
2       1 a             2       75       14          76.3          13.7
3       1 a             3       74       12          76.3          13.7
4       2 b             1       90       16          82.3          15.3
5       2 b             2       81       15          82.3          15.3
6       2 b             3       76       15          82.3          15.3

Данные:

df <- read.table(text = "subject treatment time outcome1 outcome2 
1       1         a    1       80       15
           2       1         a    2       75       14
           3       1         a    3       74       12
           4       2         b    1       90       16
           5       2         b    2       81       15
           6       2         b    3       76       15", header = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...