[英]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.