Я хотел бы создать новую переменную с меткой change_index.Эта переменная - результат 1 в момент 3 - результат 1 в момент 1 / результат 1 в момент 1.
Как мне поступить?Я попытался сделать следующее
outcome1t0 <- data %>%
filter(time == "1") %>%
select(outcome1)
outcome1t12 <- data %>%
filter(time == "3") %>%
select(outcome1)
data$newvariable <- (outcome1t0 - outcome1t12) / outcome1t0
, но получаю следующую ошибку
Error in `$<-.data.frame`(`*tmp*`, bicind, value = list(bicep = c(13.3591525423729, :
replacement has 20 rows, data has 60
Я понимаю, что это происходит потому, что новый фрейм данных меньше, так как он содержит меньше строк.Должен ли я просто создать новый фрейм данных с индексом изменений?Как мне это сделать?
Я должен рассчитать этот индекс изменений для многих переменных в столбцах (много результатов).Есть ли способ автоматизировать этот процесс?
Спасибо за чтение.
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
РЕДАКТИРОВАТЬ 1
Попытавшись сделать следующее, как предложено ниже, я изменил имена в соответствии с моими данными
ancestral1 %>%
group_by(subject) %>%
mutate(bicep0 = bicep[time == 0],
bicep12 = bicep[time == 12],
bicepind = (bicep12 - bicep0) / bicep12)
Я получаю следующую ошибку
Error in mutate_impl(.data, dots) :
Column `bicep0` must be length 1 (the group size), not 0
РЕДАКТИРОВАТЬ 2
Попробовал новое предложение, все та же ошибка
ancestral1 %>%
group_by(subject) %>%
mutate(bicep0 = if(any(time == 5)) bicep[time == 5] else NA,
bicep12 = bicep[time == 3],
bicepind = (bicep0 - bicep12) / bicep0)
Error in mutate_impl(.data, dots) :
Column `bicep12` must be length 1 (the group size), not 0