dplyr
имеет функции lag
и lead
для доступа к предыдущим и последующим строкам в таблицах.Я ищу похожую функциональность для столбцов .
Например, вот таблица:
library(tidyverse)
df <- data.frame('score1' = 1:5, 'score2' = 10:6, dif21 = NA_integer_,
'score3' = 11:15, 'score4' = 20:16, dif43 = NA_integer_)
# score1 score2 dif21 score3 score4 dif43
# 1 1 10 NA 11 20 NA
# 2 2 9 NA 12 19 NA
# 3 3 8 NA 13 18 NA
# 4 4 7 NA 14 17 NA
# 5 5 6 NA 15 16 NA
В таблице есть шаблон столбцовэто повторяется дважды: два столбца результатов, за которыми следует пустой столбец "dif", в котором будут храниться вычисленные значения.
Я могу оперировать столбцами "dif", используя mutate_at
:
df_calc <- df %>%
mutate_at(
vars(dif21),
~ score2 - score1
) %>%
mutate_at(
vars(dif43),
~ score4 - score3
)
# score1 score2 dif21 score3 score4 dif43
# 1 1 10 9 11 20 9
# 2 2 9 7 12 19 7
# 3 3 8 5 13 18 5
# 4 4 7 3 14 17 3
# 5 5 6 1 15 16 1
Это дает мне расчетные баллы, которые я хочу в столбцах "dif".В общем, формула состоит в том, чтобы вычесть две позиции столбца слева от «dif» из одной позиции столбца слева от «dif».Такого рода относительные ссылки на столбцы легко обрабатываются в Excel, но я не знаю, как это сделать в R.
Фактическое приложение - это таблица с множеством столбцов, поэтому метод использования одной формулыс относительными ссылками на столбцы будет огромной эффективностью.
Заранее спасибо за любую помощь!