首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >表中按列id字符子集分列的聚合项

表中按列id字符子集分列的聚合项
EN

Stack Overflow用户
提问于 2016-08-23 10:23:23
回答 2查看 201关注 0票数 1

我正在使用R开发一个基因表达数据集,我对编码相当陌生,所以如果我没有详细描述这个问题,请原谅我。

我的数据集看起来如下所示:

代码语言:javascript
运行
AI代码解释
复制
    GeneID        Sample1    Sample2
    Slc26a5-001   7          8
    Slc26a5-002   1          2
    Homer2-001    6          5
    Slc26a5-200   8          10

基因名是ID (Slc26a5)的第一部分,转录本编号由(-001)表示。我需要找到一种方法,将所有不同的文本ids折叠在一起,并同时将它们各自的行相加。输出将如下所示:

代码语言:javascript
运行
AI代码解释
复制
    GeneID        Sample1    Sample2
    Slc26a5       16         20
    Homer2        6          5

聚合函数应该可以根据基因ID将行相加,但是由于我不知道如何在聚合函数中仅用它们的名字的第一部分来引用基因id,所以我被困住了。

有人知道怎么做吗?

谢谢你的帮忙!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-23 10:27:47

主要是删除GeneID列的尾部分,以便将分组标准化。这在下面的sub()中完成。那它就是标准的聚合。有了aggregate(),下面的代码就可以实现了。

代码语言:javascript
运行
AI代码解释
复制
aggregate(df[-1], list(GeneID = sub("-.*", "", df$GeneID)), sum)
#    GeneID Sample1 Sample2
# 1  Homer2       6       5
# 2 Slc26a5      16      20

我们也可以使用rowsum(),而不是不必要地转换任何数据。

代码语言:javascript
运行
AI代码解释
复制
rowsum(df[-1], sub("-.*", "", df$GeneID))
#         Sample1 Sample2
# Homer2        6       5
# Slc26a5      16      20

数据:

代码语言:javascript
运行
AI代码解释
复制
df <- structure(list(GeneID = structure(c(2L, 3L, 1L, 4L), .Label = c("Homer2-001", 
"Slc26a5-001", "Slc26a5-002", "Slc26a5-200"), class = "factor"), 
    Sample1 = c(7L, 1L, 6L, 8L), Sample2 = c(8L, 2L, 5L, 10L)), .Names = c("GeneID", 
"Sample1", "Sample2"), class = "data.frame", row.names = c(NA, 
-4L))
票数 1
EN

Stack Overflow用户

发布于 2016-08-23 10:26:18

我们可以使用rowsum。为了更容易理解,这里我们将它分割成多行(虽然可以在一行中完成)

代码语言:javascript
运行
AI代码解释
复制
m1 <- as.matrix(df1)
row.names(m1) <-  sub("-.*", "", row.names(df1))
rowsum(m1, group = row.names(m1))
#         Sample1 Sample2
#Homer2        6       5
#Slc26a5      16      20

注意:在未经编辑的OP文章中,它是行名。

如果它是一个以'GeneID‘作为列而不是作为row.names的GeneID,那么使用hadleyverse的一个有效选项是按分隔符对'GeneID’列进行separate,按'GeneID‘分组,然后用summarise_each获取所有列的sum

代码语言:javascript
运行
AI代码解释
复制
library(dplyr)
library(tidyr)
separate(df2, GeneID, "GeneID") %>%
   group_by(GeneID) %>%
   summarise_all(funs(sum))
#   GeneID Sample1 Sample2
#    <chr>   <int>   <int>
#1  Homer2       6       5
#2 Slc26a5      16      20

或者使用data.table,我们将'data.frame‘转换为' Data.table’(setDT(df2)),通过分隔符将'GeneID‘转化为’GeneID‘,循环遍历Data.table的子集并得到sum

代码语言:javascript
运行
AI代码解释
复制
library(data.table)
setDT(df2)[, lapply(.SD, sum),.(GeneID=tstrsplit(GeneID, "-")[[1]])]
#    GeneID Sample1 Sample2
#1: Slc26a5      16      20
#2:  Homer2       6       5

注:以上两种解决方案将非常有效。

数据

代码语言:javascript
运行
AI代码解释
复制
df2 <- structure(list(GeneID = c("Slc26a5-001", "Slc26a5-002", "Homer2-001", 
"Slc26a5-200"), Sample1 = c(7L, 1L, 6L, 8L), Sample2 = c(8L, 
2L, 5L, 10L)), .Names = c("GeneID", "Sample1", "Sample2"),
class = "data.frame", row.names = c(NA, -4L))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39108250

复制
相关文章
在.Net Core中记录日志
一个完善的系统,必然会有非常完善的日志记录,用户的操作、系统的运行状况等信息被完整的记录下来,方便我们对系统进行维护和改进。.net core 也为日志记录提供了内置的支持。
拓荒者IT
2019/09/23
1.3K0
在MySQL中查找重复记录
I want to pull out duplicate records in a MySQL Database. 我想在MySQL数据库中提取重复记录。 This can be done with: 这可以通过以下方式完成:
kirin
2021/04/30
3.9K0
记录GOPATH在GOLAND中的坑
这里的GOPATH已经出错了,所以编译找不到,我检查了go env也是正确的GOPATH....
超蛋lhy
2018/08/31
1.8K0
记录GOPATH在GOLAND中的坑
MySQL 在查询结果中记录行号
在其他的关系型数据库中,都有rownum这类型的内置函数来提供查询结果的行号,但是MySQL没有,阿福也一直觉得奇怪。
用户2353021
2020/05/09
6.7K0
[cloc]在Windows中配置cloc的记录
https://github.com/AlDanial/cloc/releases
逝水经年
2022/03/14
3K0
Canvas使用beginPath()绘画不同颜色的直线
从图中可以看到,在每条直线都设置上了颜色和宽度,那么会不会画出三条不同颜色的直线呢?
Devops海洋的渔夫
2019/12/26
2.1K0
Canvas使用beginPath()绘画不同颜色的直线
canvas绘制图形时beginPath应用
当我们在使用canvas绘制图形的时候,不免都会使用到beginPath这个方法。今天我们就来讲解一下这个函数的重要性以及应用。
小明爱学习
2020/01/21
7650
咖啡销售2.0
咖啡是美国乃至全世界消费最广泛的饮料之一。美国人每天消费4亿杯咖啡,使美国成为世界上最主要的咖啡消费国。
用户8128510
2021/01/28
8000
在 Azure Application Insights 中记录用户身份信息
Azure Application Insights 是一个非常强大的 APM 工具,用于监视 Web 应用程序。但是,并非我们需要的所有功能都是开箱即用的。例如,为了记录请求和响应正文,我们必须写一个自定义 ASP.NET Core 中间件,就像这篇文章说的那样。
Edi Wang
2021/08/23
1.1K0
在 Azure Application Insights 中记录用户身份信息
在日志中记录Java异常信息的正确姿势
今天遇到一个线上的BUG,在执行表单提交时失败,但是从程序日志中看不到任何异常信息。 在Review源代码时发现,当catch到异常时只是输出了e.getMessage(),如下所示:
编程随笔
2019/06/27
2.6K0
在日志中记录Java异常信息的正确姿势
【架构治理】在代码存储库中记录软件架构
Markdown 是一种标准的简单语法,用于创建具有专业外观的文档。它比 HTML 更简单,无需专门的编写编辑器即可进行管理。Git配置管理工具也支持markdown格式。在 Git 环境中,markdown 一般用于项目的简单介绍和构建说明。(自述文件)。本文介绍了如何将 Markdown 格式与模板一起用于架构文档。 带有 Markdown 的架构文档 与代码一起管理软件的架构设计和设计决策将为项目提供极大的便利。当我们的设计与代码一起保存在配置管理环境中时,我们可以一起进行设计变更和代码变更。当新
架构师研究会
2022/04/12
1.7K0
【架构治理】在代码存储库中记录软件架构
在Python中调用Java扩展包HanLP测试记录
最近在研究中文分词及自然语言相关的内容,关注到JAVA环境下的HanLP,HanLP是一个致力于向生产环境普及NLP技术的开源Java工具包,支持中文分词(N-最短路分词、CRF分词、索引分词、用户自定义词典、词性标注),命名实体识别(中国人名、音译人名、日本人名、地名、实体机构名识别),关键词提取,自动摘要,短语提取,拼音转换,简繁转换,文本推荐,依存句法分析(MaxEnt依存句法分析、神经网络依存句法分析)。
IT小白龙
2018/12/12
2K0
在Python中调用Java扩展包HanLP测试记录
10分钟带你读完《在星巴克要买大杯咖啡》
这是一本很有趣的关于生活中的经济学的小册子,日本人吉本佳生用一个个小故事为我们讲述了那些生活中隐藏的经济学知识。
100000798482
2018/08/20
1.5K0
10分钟带你读完《在星巴克要买大杯咖啡》
ROS1Noetic在Win11中安装记录
和Win10类似,windows系统安装和使用ROS的好处,几乎主流版本的ROS全部可以用,还能用WSL使用Ubuntu下原生ROS,非常方便。
zhangrelay
2022/06/27
6670
ROS1Noetic在Win11中安装记录
【实战记录】WebSocket在vue2中的使用
官方说, WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。但是我对网络协议并不了解,用实际用途去解释它就是,它支持服务端主动给客户端发送消息。
一尾流莺
2022/12/10
3.3K0
IOS内测记录:在自有App中运行小程序游戏
作为FinClip的老用户,很早就向官方提出了希望支持微信小游戏的建议。现如今,官方也把小游戏支持提上了日程,近期开启了公测通道。团队用小游戏进行了测试,在这里记录分享一下测试情况。
Lydiasq
2022/12/06
7830
IOS内测记录:在自有App中运行小程序游戏
在文章中插入超美的音乐播放插件开发记录
是不是有点复杂呢?而且鸡肋呢?没错下一款插件我就准备推出 mokplayer 实现 typecho 遗留问题 音乐播放
乔千
2020/04/16
1.6K0
在文章中插入超美的音乐播放插件开发记录
在Salesforce中动手创建页面布局和记录类型
通过官方的工作册和教程来学习Salesforce很好,但对于我个人来讲我很难抽出时间去看这些材料,因为它不是我的公司的需求,并且从中学到的并不是我在日常工作中可以使用的东西。
臭豆腐
2019/04/16
2.6K0
在Salesforce中动手创建页面布局和记录类型
理解DNS记录以及在渗透测试中的简单应用
DNS (Domain Name System, 域名系统 ),万维网上作为域名和IP地址相互映射的一个 分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。
FB客服
2018/12/26
2.3K0
用AR发福利,与初音未来邂逅在咖啡馆
初音未来坐在对面品尝咖啡、卖萌撒娇,你的小心脏能hold住吗? 与二次元偶像约会怎么样?想必很多宅男很乐意接下这波福利。据最新消息,在日本的一家名叫“BLUE FEAF CAFÉ”的咖啡厅就能邂逅初音未来。 听起来很梦幻吧,其实这是这家咖啡厅的线下联动活动,通过一款叫做“miku☆散步(ミク☆さんぽ)”的AR应用来实现。在活动中,顾客们将通过搭载AR技术“Tango”的安卓手机“Lenovo Phab 2 Pro”打开应用,就能看见坐在对面的初音未来,还穿着JK制服。 由于搭载最新的增强现实技术,可爱的初音
镁客网
2018/05/30
4810

相似问题

Tkinter动画-模拟模拟时钟

121

jQuery动画()平滑

112

平滑jQuery动画

11

Jquery/CSS -动画打开div盒容器平滑

10

CSS平滑文本动画

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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