Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如果表的长度不同,如何对多个表中的列值进行求和?

如果表的长度不同,如何对多个表中的列值进行求和?
EN

Stack Overflow用户
提问于 2015-06-17 04:49:30
回答 3查看 159关注 0票数 8

好的,这应该是一个简单的问题,但我正在寻找一个尽可能快的解决方案。

假设我有3个表(表的数量要大得多):

代码语言:javascript
运行
AI代码解释
复制
tab1 <- table(c(1, 1, 1, 2, 2, 3, 3, 3))
tab2 <- table(c(1, 1, 4, 4, 4))
tab3 <- table(c(1, 1, 2, 3, 5))

我们得到的是:

代码语言:javascript
运行
AI代码解释
复制
> tab1
1 2 3 
3 2 3 
> tab2
1 4 
2 3 
> tab3
1 2 3 5 
2 1 1 1 

我想要一种快速的方式,以便它能够与许多大表一起工作:

代码语言:javascript
运行
AI代码解释
复制
1 2 3 4 5
7 3 4 3 1

因此,基本上所有names上的表都是聚合的。是否有一个基本的函数来完成这一点,这是我所缺少的?谢谢你的帮忙!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-17 05:02:43

我们连接(c) tab输出以创建'v1',使用tapply获取按该对象的names分组的元素的sum

代码语言:javascript
运行
AI代码解释
复制
v1 <- c(tab1, tab2, tab3)
tapply(v1, names(v1), FUN=sum)
#1 2 3 4 5 
#7 3 4 3 1 
票数 12
EN

Stack Overflow用户

发布于 2015-09-17 17:11:00

你可以用rowsum()。输出将与所显示的略有不同,但在计算之后始终可以对其进行重构。众所周知,rowsum()非常高效。

代码语言:javascript
运行
AI代码解释
复制
x <- c(tab1, tab2, tab3)
rowsum(x, names(x))
#   [,1]
# 1    7
# 2    3
# 3    4
# 4    3
# 5    1

这里还有一个基准测试,其中还添加了akrun的data.table建议。

代码语言:javascript
运行
AI代码解释
复制
library(microbenchmark)
library(data.table)

xx <- rep(x, 1e5)

microbenchmark(
    tapply = tapply(xx, names(xx), FUN=sum),
    rowsum = rowsum(xx, names(xx)),
    data.table = data.table(xx, names(xx))[, sum(xx), by = V2]
)
# Unit: milliseconds
#        expr       min        lq      mean    median        uq       max neval
#      tapply 150.47532 154.80200 176.22410 159.02577 204.22043 233.34346   100
#      rowsum  41.28635  41.65162  51.85777  43.33885  45.43370 109.91777   100
#  data.table  21.39438  24.73580  35.53500  27.56778  31.93182  92.74386   100
票数 5
EN

Stack Overflow用户

发布于 2015-06-17 05:01:50

你可以试试这个

代码语言:javascript
运行
AI代码解释
复制
df <- rbind(as.matrix(tab1), as.matrix(tab2), as.matrix(tab3))
aggregate(df, by=list(row.names(df)), FUN=sum)
  Group.1 V1
1       1  7
2       2  3
3       3  4
4       4  3
5       5  1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30892120

复制
相关文章
flutter - 如何在SingleChildScrollView中实现非滚动 ListView
我试图在这里实现一个不可滚动的ListView构建器,但似乎找不到解决方法。原因是因为我希望所有内容都是可滚动的,并且我不想在可滚动的父级中拥有可滚动的小部件。
徐建国
2021/08/03
2.5K0
如何在Fortran中调用Python
Python是机器学习领域不断增长的通用语言。拥有一些非常棒的工具包,比如scikit-learn,tensorflow和pytorch。气候模式通常是使用Fortran实现的。那么我们应该将基于Python的机器学习迁移到Fortran模型中吗?数据科学领域可能会利用HTTP API(比如Flask)封装机器学习方法,但是HTTP在紧密耦合的系统(比如气候模式)中效率太低。因此,可以选择直接从Fortran中调用Python,直接通过RAM传递气候模式的状态,而不是通过高延迟的通信层,比如HTTP。
bugsuse
2020/04/21
6.1K0
如何在 Flutter 中设置背景图像【Flutter专题16】
在 Flutter 应用程序中设置背景图像的常用方法是使用DecorationImage. 以下示例包括如何设置Fit 模式、透明度以及在显示键盘时防止图像变化。
徐建国
2021/12/13
12.3K0
如何在 Flutter 中设置背景图像【Flutter专题16】
ES中的api调用测试
SearchRequest可用于与搜索文档、聚合、建议有关的任何操作,还提供请求突出显示结果文档的方法。 
一个风轻云淡
2023/10/15
2630
【Python】如何在VBA中调用Pyt
背景: 已有一个Python脚本实现了部分功能,想使用VBA直接调用Python脚本 Python脚本如下: import time def hello(name): return "Hello, " + name + "!" print hello("World") #延时关闭windows控制台,使得用户可以看到运行结果 time.sleep(150); 方法如下: <pre name="code" class="vb">Sub test() Call Shell("C:\Pyt
py3study
2020/01/09
1.9K0
如何在低版本SDK调用高版本API?
随着Android SDK版本不断的迭代更新,在新的SDK上总是会出现让人眼前一亮非常方便好用的API。但是这些新的API呢在低版本的SDK上是没有的,所以当我们的minSdkVersion的版本低于新API所在的版本时,我们直接使用新API在编译时会出现报错。如果只是想解决编译报错的问题呢,Android给我们提供了两种注解的方式避免编译时报错:
吴延宝
2018/09/10
5K1
flutter - 如何在 dart/flutter 中收听流值
如果流不是广播流,则您只能收听一次。 请参阅此 Medium post 以了解有关 Streams 的更多信息。 收听 stream 时,您需要在 _assetsAudioPlayer.currentPosition 函数中添加您的代码。
徐建国
2021/08/30
1.1K0
如何在 Flutter 中创建自定义图标【Flutter专题22】
Flutter 提供了很多开箱即用的图标,使用这些图标非常容易。但是,您也可以使用自己的图标。您需要的是一个 TTF(True Type Font)文件,其中包含您要使用的图标。生成 TTF 文件的最简单方法是使用 Fluttericon.com。
徐建国
2022/03/30
3.5K0
Flutter:避免在生产代码中调用“print”
在使用新版本的 Flutter(2.5.0 或更高版本)时,如果您调用**print()**函数向控制台输出某些内容,IDE 会向您大喊大叫(这种行为以前没有发生过):
徐建国
2021/11/30
3.4K1
Flutter:避免在生产代码中调用“print”
实战教程:如何在API监控中实现高效报警和通知
因一业务需要,想要对API服务接口添加一些监控,以帮助跟踪应用程序的性能、问题和用户活动等。实现监控的方式有多种多样的方式,以下是一些常用的方法:
用户3578099
2023/09/27
8490
实战教程:如何在API监控中实现高效报警和通知
通过REDIS实现限制API调用次数
在对外提供api接口时,往往需要对api接口进行限制,某些情况下还需要做好防止接口被刷的功能。利用redis的自增计数特性可以很轻易的实现该功能。
程序新视界
2020/07/06
2.2K0
基于Powershell 实现腾讯云 API 调用
虽然腾讯云已经提供了支持多种语言的 SDK,使用起来也非常方便,但是某些环境中没有相关的运行环境使用起来往往带来一些环境准备和合规的成本。PowerShell 作为Windows环境普遍存在脚本环境,如果能够顺利运行云相关API将会非常方便。
用户8856568
2023/01/06
3.3K1
qt调用simsimi api实现小黄鸡
项目地址:https://github.com/racaljk/xiaojianji
racaljk
2019/02/25
8250
如何在Excel中调用Python脚本,实现数据自动化处理
这次我们会介绍如何使用xlwings将Python和Excel两大数据工具进行集成,更便捷地处理日常工作。
朱卫军 AI Python
2022/04/03
3.9K0
如何在Excel中调用Python脚本,实现数据自动化处理
flutter中如何实现deeplink
ios也支持两种,"Universal Links" 和 "Custom URL schemes",两个功能和android类似。
用户1974410
2022/09/20
2.4K0
Flutter中实现延时操作
本文是异步编程的延时策略篇章,在Flutter中实现延时操作有两种方式,一种是通过Future,另一种是通过Timer。
徐建国
2021/10/14
2.8K0
如何在小程序中调用本地接口
如何在小程序中调用本地接口 背景: 随着微信小程序开始公测,我司也拿到了AppID,所以开始了微信小程序的趟坑之旅。 由于现在网上已经有很多的《微信小程序从精通到入门》的教程了,所以就不再重复那些,只是讲一下,在开发的过程中,如何使用本地(开发环境)的接口。 因为小程序的开发文档中写到了,wx.request 中的URL只能是一个https请求,本地一般来讲是不会有https的-.- 所以我们使用Charles代理来实现需求。 前提: 本人认为你现在已经具备以下几个条件: 具有微
贾顺名
2018/04/12
2.8K0
如何在小程序中调用本地接口
Flutter调用平台代码
在前面的文章中我们讲了许多Flutter中的组件和Flutter中的特定操作,但是单单使用Flutter里的组件和方法是不够的。
flyou
2019/08/06
2.2K0
Flutter调用平台代码
Flutter开发·Flutter中动画的实现与使用
Flutter中动画的核心类库是Animation,它并不是一个widget,Animation是一个抽象类,就相当于一个定时器,用来描述当前动画的开始,暂停,以及数值状态,与ui渲染没有任何关系,它不能直接控制ui页面上的组件的样式,组件只能通过获取它的状态来改变ui的状态。
玖柒的小窝
2021/10/07
1.6K0
点击加载更多

相似问题

如何在flutter中调用API?

227

如何在flutter中调用API回调?

41

如何在flutter中实现Agora云录制api?

115

如何在API flutter数据上实现if语句

10

如何在Flutter中缓存API调用的响应?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档