Исходя из желаемого результата, вы хотите вычесть period2 из периода 1, я прав?
Если это так, я не думаю, что вы можете назвать это средним. Одним из возможных решений является:
library(dplyr)
library(tidyr)
df %>% pivot_wider(names_from = period, values_from = score) %>%
mutate(Avg = `1` - `2`) %>% select(id, Avg)
Другая возможность - присвоить отрицательное число для оценки за период 2, а затем суммировать оценку для каждого идентификатора:
library(dplyr)
df %>% mutate(score = ifelse(period == 2, score*-1, score)) %>%
group_by(id) %>% summarise(Score = sum(score))
# A tibble: 3 x 2
id Score
<int> <dbl>
1 1 1
2 2 3
3 3 3