[英]Sum of selected rows and adding to the next row in R
我需要总结“S”列中“D”值不为零的所有值。 然后,我想将此结果与“S”列的下一行(标记为红色)中的值相加。 代替标记为黄色的值,我想在新的 S 中放置 0。
df<-data.frame(product = rep("A",7), data = seq(as.Date("2020-01-06"), as.Date("2020-01-12"), by = "day"),
D = c(0,200,100,50,0,0,0), S = c(2,20,300,300,200,1,1))
> df
product data D S
1 A 2020-01-06 0 2
2 A 2020-01-07 200 20
3 A 2020-01-08 100 300
4 A 2020-01-09 50 300
5 A 2020-01-10 0 200
6 A 2020-01-11 0 1
7 A 2020-01-12 0 1
你可以试试:
library(dplyr)
df %>%
group_by(idx = cumsum(lag(D == 0, default = TRUE))) %>%
mutate(`new S` = case_when(
row_number() == n() ~ sum(S, na.rm = TRUE),
TRUE ~ 0)
) %>%
ungroup() %>%
select(-idx)
输出:
# A tibble: 7 x 5
product data D S `new S`
<fct> <date> <dbl> <dbl> <dbl>
1 A 2020-01-06 0 2 2
2 A 2020-01-07 200 20 0
3 A 2020-01-08 100 300 0
4 A 2020-01-09 50 300 0
5 A 2020-01-10 0 200 820
6 A 2020-01-11 0 1 1
7 A 2020-01-12 0 1 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.