如何解决如何对缺少观察的分组数据使用累积求和函数
我使用一个看起来像这样的数据框:
DATUM CP SMER TRH MNOZSTVI CENA POPLATKY OBJEM UCET KVARTAL ROK AKTUALNI.MNOZSTVI
<dttm> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <chr> <dbl> <dbl>
1 2020-03-03 00:00:00 CEZ K BCPP 50 465. 91.3 -23240 CZK Q1 2020 NA
2 2020-03-04 00:00:00 CEZ K BCPP 50 467. 58.9 -13980 CZK Q1 2020 NA
3 2020-03-12 00:00:00 CEZ P BCPP 30 398 51.8 11940 CZK Q1 2020 NA
4 2020-03-25 00:00:00 KOMERCNI BANKA K BCPP 40 542 85.9 -21680 CZK Q1 2020 NA
5 2020-03-25 00:00:00 MONETA MONEY BANK K BCPP 300 58.4 71.3 -17505 CZK Q1 2020 NA
6 2020-03-30 00:00:00 CEZ K BCPP 10 391 50 -3910 CZK Q1 2020 NA
7 2020-04-02 00:00:00 USD K NA 1000 25.8 0 -25778 CZK Q2 2020 NA
8 2020-04-03 00:00:00 USD K NA 3000 26.1 0 -78392 CZK Q2 2020 NA
9 2020-04-04 00:00:00 USD K NA 1000 26.4 0 -26363. CZK Q2 2020 NA
10 2020-04-06 00:00:00 AVAST K BCPP 150 125. 75.8 -18810 CZK Q2 2020 NA
我想将变量 MNOZSTVI 的累积和填充到按 CP 分组的变量 AKTUALNI.MNOZSTVI 中。所以向量 AKTUALNI.MNOZSTVI 应该是 c(50,100,130,40,300,140,1000,4000,5000,150,etc.)。
问题是 MNOZSTVI 的某些值丢失了,所以我不知道如何使用无法处理缺失值的函数 cumsun() + 我很难对分组数据执行它。
有人知道如何在 cumsum() 或其他函数的帮助下做到这一点吗? 谢谢。
解决方法
我们可以按'CP'分组,得到cumsum
中'MNOZSTVI'的mutate
library(dplyr)
df1 <- df1 %>%
group_by(CP) %>%
mutate(AKTUALNI.MNOZSTVI = cumsum(MNOZSTVI))
或者将 base R
与 ave
一起使用
df1$AKTUALNI.MNOZSTVI <- with(df1,ave(MNOZSTVI,CP,FUN = cumsum))
,
library(dplyr)
df %>%
group_by(CP) %>%
mutate(AKTUALNI.MNOZSTVI = cumsum(MNOZSTVI))
输出:
DATUM CP SMER TRH MNOZSTVI CENA POPLATKY OBJEM UCET KVARTAL ROK.AKTUALNI..MNOZSTVI AKTUALNI.MNOZSTVI
<chr> <chr> <chr> <chr> <int> <dbl> <chr> <chr> <chr> <chr> <chr> <int>
1 2020-03-03 00:00:00 CEZ K BCPP 50 465 91.3 NA CZK Q1 2020 NA 50
2 2020-03-04 00:00:00 CEZ K BCPP 50 467 58.9 NA CZK Q1 2020 NA 100
3 2020-03-12 00:00:00 CEZ P BCPP 30 398 51.8 11940 CZK Q1 2020 130
4 2020-03-25 00:00:00 KOMERCNI BANKA K BCPP 40 542 85.9 - CZK Q1 2020 40
5 2020-03-25 00:00:00 MONETA MONEY BANK K BCPP 300 58.4 71.3 - CZK Q1 2020 300
6 2020-03-30 00:00:00 CEZ K BCPP 10 391 50 - CZK Q1 2020 140
7 2020-04-02 00:00:00 USD K NA 1000 25.8 0 - CZK Q2 2020 1000
8 2020-04-03 00:00:00 USD K NA 3000 26.1 0 - CZK Q2 2020 4000
9 2020-04-04 00:00:00 USD K NA 1000 26.4 0 - CZK Q2 2020 5000
10 2020-04-06 00:00:00 AVAST K BCPP 150 125 75. 8 - CZK Q2 2020 150
数据:
df <- tibble::tribble(
~DATUM,~CP,~SMER,~TRH,~MNOZSTVI,~CENA,~POPLATKY,~OBJEM,~UCET,~KVARTAL,~ROK.AKTUALNI..MNOZSTVI,"2020-03-03","00:00:00 CEZ","K","BCPP",50L,465,"91.3",NA,"CZK","Q1","2020 NA","2020-03-04",467,"58.9","2020-03-12","P",30L,398,"51.8","11940","2020","2020-03-25","00:00:00 KOMERCNI BANKA",40L,542,"85.9","-","00:00:00 MONETA MONEY BANK",300L,58.4,"71.3","2020-03-30",10L,391,"50","2020-04-02","00:00:00 USD",1000L,25.8,"0","Q2","2020-04-03",3000L,26.1,"2020-04-04",26.4,"2020-04-06","00:00:00 AVAST",150L,125,"75. 8","2020"
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。