Я новичок в R и хотел бы изменить набор данных, чтобы каждый столбец содержал совокупную сумму значений во всех столбцах слева от него (включая его самого). Я знаю, как использовать rowSums
для расчета совокупной суммы для каждого столбца отдельно:
df <- data.frame(
jan = rep(1:2, each = 3),
feb = rep(1:3, each = 2),
mar = rep(5:4, each = 3),
apr = rep(1:3, each = 2)
)
df
df %>%
mutate(feb = rowSums(subset(., select = (jan:feb))),
mar = rowSums(subset(., select = (jan:mar))),
apr = rowSums(subset(., select = (jan:apr))))
Что дает результат, который я ищу:
jan feb mar apr
1 1 2 7 8
2 1 2 7 8
3 1 3 8 10
4 2 4 8 10
5 2 5 9 12
6 2 5 9 12
Как могу я обобщить это на любое количество столбцов? Я пробовал такие утверждения:
df %>% mutate_at(vars(-jan), ~rowSums(subset(., select = (jan:.))))
Но я неправильно использую subset
. Заранее благодарим, если вы вообще можете помочь.