当前位置:  开发笔记 > 编程语言 > 正文

dplyr中的条件求和

如何解决《dplyr中的条件求和》经验,为你挑选了1个好方法。

我有以下数据框:

df <- structure(list(Claim2015 = c(1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), Claim2016 = c(1, 0, 1,
1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0), Claim2017 = c(0,
0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1), Claim2018 = c(0,
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1), Claim2019 = c(0,
0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0)), row.names = c(NA,
-20L), class = c("tbl_df", "tbl", "data.frame"))

我想创建一个有条件的求和,即在2015年提出索赔的人中,2016年提出了要求;在这两者中,2017年有多少,以此类推(总和将会减少)。

因此,预期输出为:

 db <- data_frame(Had2015 = 20, Had2016 = 15, Had2017 = 9, Had2018 = 7, Had2019 = 5)

我开始做的是

df1 <- df %>% group_by_all %>% count

这以一种易于计数的方式来组织输出-所以我将n那些1,那些1和1,那些1&1和1等等的总和-只是不知道该怎么做这是自动的。

任何帮助,将不胜感激。



1> Ronak Shah..:

使用基数R,我们可以递增地遍历每一列,并用全部1计算行数。

sapply(seq_along(df), function(x) sum(rowSums(df[1:x] == 1) == x))
#[1] 20 15  9  7  5

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有