【发布时间】:2020-05-08 17:08:31
【问题描述】:
我是 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。如果您能提供帮助,请提前致谢。
【问题讨论】:
-
你需要使用
mutate吗?只是在列索引较低的列中运行apply并不能满足您的需求吗?