簡體   English   中英

選定行的總和並添加到 R 中的下一行

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM