Как создать новый столбец на основе расчетов из разных групп - PullRequest
0 голосов
/ 01 апреля 2020

Я новичок в R, и у меня возникают проблемы при создании нового столбца со значениями, полученными из указанного c набора инструкций. Мой фрейм данных с именем labdata_wide выглядит следующим образом:

Sample data

Всего 51 строка, по одной на каждого участника, и 5 столбцов (participant, group, baseline, week 4 и week 8). Я хотел бы создать еще один столбец с именем change, который после проверки участников group (т. Е. Если участники группы А или B) затем выполняет 1 из 2 возможных вычислений вычитания.

Я хочу группу Участники должны вычесть свои значения baseline из своих значений неделя 4 И участникам группы B вычесть их значения week 4 из их неделя 8 значения.

Группа A -> неделя 4 - базовый уровень

Группа B -> неделя 8 - неделя 4

Все рассчитанные значения должны быть в одном столбце. Возможно ли это сделать?

Я пытался поиграться с пакетом dplyr, в частности с функцией mutate, но я не смог понять, как решить проблему.

Код, который я пробовал:

labdata_wide %>% group_by(group) %>%  mutate(change = week 4[group == 'A'] - baseline[group == 'A'])

Но я получаю код ошибки:

Error: Column "change" must be length 24 (the group size) or one, not 0

Проблема незнакомца в том, что даже если я указал, какую группу (то есть A) Я считаю, что он использует значения группы B, потому что в моем df есть 27 членов группы A и 24 члена группы B.

1 Ответ

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

Может быть, этот подход соответствует вашей цели. Я еще не проверял это, поскольку у меня нет данных.

library(dplyr)

labdata_wide %>%
  mutate(change = case_when(
                  group == "A" ~ `week 4` - baseline,
                  group == "B" ~ `week 8` - `week 4`,
                  TRUE ~ other value/calculation ) )

# or if only group A & B, simply

labdata_wide %>%
  mutate(change = case_when(
                  group == "A" ~ `week 4` - baseline,
                  group == "B" ~ `week 8` - `week 4`))

PS. Возможно, вы захотите изменить имя столбца на правильное имя (например, без пробела)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...