楼主: 时间与牛奶
42697 7

[问答] R语言多条件求和与计数 [推广有奖]

  • 0关注
  • 0粉丝

高中生

22%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
312 点
帖子
19
精华
0
在线时间
20 小时
注册时间
2013-1-7
最后登录
2018-11-7

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
如题,想问一下R能做到像excel那样多条件求和与计数吗?例如excel里面的sumifs函数和countifs函数的那种功能
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:条件求和 多条件 R语言 COUNTIF sumifs excel

沙发
felixzhao123 发表于 2016-7-11 11:08:25 |只看作者 |坛友微信交流群
这个问题,R有太多的方法可以实现,下面仅是一个例子:
  1. data(mtcars)
  2. head(mtcars)
  3. require(dplyr)
  4. mtcars%>%
  5.   group_by(cyl,am)%>%
  6.   summarise(AveMPG=mean(mpg),Counts=n())
复制代码
已有 1 人评分经验 收起 理由
李会超 + 60 热心帮助其他会员

总评分: 经验 + 60   查看全部评分

使用道具

藤椅
时间与牛奶 发表于 2016-7-11 11:26:24 |只看作者 |坛友微信交流群
felixzhao123 发表于 2016-7-11 11:08
这个问题,R有太多的方法可以实现,下面仅是一个例子:
我有个数据,想在多个列满足某个条件下求和以及计数,不知道该怎么写代码呢?而且我想用矩阵,以为数据很大,有52万行

使用道具

板凳
时间与牛奶 发表于 2016-7-11 11:31:18 |只看作者 |坛友微信交流群
felixzhao123 发表于 2016-7-11 11:08
这个问题,R有太多的方法可以实现,下面仅是一个例子:
请问你的代码能加以说明一下吗?我新手,有些代码看的不是很懂,谢谢!

使用道具

报纸
十里春风 学生认证  发表于 2016-7-11 12:47:45 |只看作者 |坛友微信交流群
sumifs和countifs其实就是按某一列取条件,然后找出TRUE对应的数据,进行计算。
  1. r<-matrix(runif(12),ncol=3)
  2. r
  3.            [,1]      [,2]       [,3]
  4. [1,] 0.17593396 0.7648851 0.29016420
  5. [2,] 0.74056331 0.9997781 0.09155136
  6. [3,] 0.63147344 0.1929230 0.53670151
  7. [4,] 0.04366817 0.7983398 0.60063943
复制代码

比如前两列都大于0.5,对第三列进行求和
  1. ind=r[,1]>0.5 & r[,2]>0.5
  2. sum(r[ind,3])
复制代码
已有 1 人评分经验 论坛币 收起 理由
李会超 + 40 + 5 热心帮助其他会员

总评分: 经验 + 40  论坛币 + 5   查看全部评分

使用道具

地板
felixzhao123 发表于 2016-7-11 13:37:44 |只看作者 |坛友微信交流群
时间与牛奶 发表于 2016-7-11 11:26
我有个数据,想在多个列满足某个条件下求和以及计数,不知道该怎么写代码呢?而且我想用矩阵,以为数据很 ...
52万行数据问题不大
我的代码都是用dplyr包里面的函数,根据你的情况,可能还需要使用到filter函数
data(mtcars)是载入示例数据集
head(mtcars)看一下数据的前几行,对数据有所了解
require(dplyr)载入dplyr包
最后三行是一起运行的
将mtcars这个数据框作为下一个group-by的源数据,通过cyl和am这两列进行排序
最后一行对数据进行汇总计算,增加两列,第一列是分组后的mpg的均值,最后一个Counts就是计数

使用道具

7
时间与牛奶 发表于 2016-7-11 17:10:40 |只看作者 |坛友微信交流群
十里春风 发表于 2016-7-11 12:47
sumifs和countifs其实就是按某一列取条件,然后找出TRUE对应的数据,进行计算。

比如前两列都大于0.5,对 ...
谢谢!这个对于现在的我来说,简洁明了。

使用道具

8
时间与牛奶 发表于 2016-7-11 17:22:13 |只看作者 |坛友微信交流群
felixzhao123 发表于 2016-7-11 13:37
52万行数据问题不大
我的代码都是用dplyr包里面的函数,根据你的情况,可能还需要使用到filter函数
dat ...
这么说的话head(mtcars)这个是不是就不必要的?我看的还是
申请号申请编号申请日期客户姓名身份证事业部区域产品批核时间实地审核审核工号审批审批工号高级审批经理高级审批经理工号面签前批核结果最终批核结果面签前批核金额最终批核金额批核时间实地后当前状态
比如说我上面的几个变量,我想在“批核时间”,“产品”,“事业部”等这几个满足某个条件后对“批核金额”这一列求和,该如何编码?

1.png (4.57 KB)

1.png

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 17:22