Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >表中按列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

复制
相关文章
[Cocos Creator] 围绕物体旋转
在游戏开发过程中,可能会有让一个物体围绕另一个物体旋转的需求,就比如月球围绕着地球旋转,同时地球也在围绕着太阳旋转。
陈皮皮
2020/07/10
3.8K0
[Cocos Creator] 围绕物体旋转
HTML元素
注意:一些 HTML 元素没有内容(如 <br> 元素)。这些元素称为空元素。空元素没有结束标签!
玖柒的小窝
2021/09/24
1.4K0
HTML 元素
注释: 您将在本教程的下一章中学习更多有关属性的内容。 嵌套的 HTML 元素 大多数 HTML 元素可以嵌套(HTML 元素可以包含其他 HTML 元素)。 HTML 文档由相互嵌套的 HTML 元素构成。 HTML 文档实例
用户6884826
2021/07/07
1.3K0
HTML 元素
HTML 元素 开始标签 * 元素内容 结束标签 * <p> 这是一个段落 </p> <a href="default.htm"> 这是一个链接 </a> <br> 换行 HTML 元素语法 HTML 元素以开始标签起始 HTML 元素以结束标签终止 元素的内容是开始标签与结束标签之间的内容 某些 HTML 元素具有空内容(empty content) 空元素在开始标签中进行关闭(以开始标签的结束而结束) 大多数 HTML 元素可拥有属性
用户8442333
2021/08/21
1.5K0
HTML 元素
Web浏览器(如谷歌浏览器,Internet Explorer,Firefox,Safari)是用于读取HTML文件,并将其作为网页显示。
用户8442333
2021/08/21
1.3K0
Flash:DisplayObject的矩阵旋转(移动/修改注册点,修改旋转点)
简单来说,原理就是利用matrix运算,先把旋转点移到原点位置,旋转变换后再恢复到原来的位置 var a:Sprite = new Sprite(); a.graphics.beginFill(0); a.graphics.drawRect(0,0,100,100); a.graphics.drawCircle(0,0,6); a.graphics.endFill(); addChild(a); a.x = a.y = 100; trace (a.transform.matrix); var m:Matr
用户1258909
2018/07/04
9500
多个扇形元素绕圆旋转
这种效果有很多方案,最后选择了一个比较简单的方案,就是一个position: relative;的 div 。包裹5个position: absolute;的div。 通过旋转,调整5个div的 top 与 left,而产生弧度,并使中心点都指向圆心。 黄色扇形与文字 都是在5个div内部。
拿我格子衫来
2023/10/19
3060
多个扇形元素绕圆旋转
html元素(标签)
html元素(标签) <!DOCTYPE html> <html> <head> <!-- 头标签用于存放<meta><title>等标签 --> <meta charset="utf-8"> <!-- 设置编码 --> <title>html5</title> <!-- 设置标题 --> <link rel="stylesheet" type="text/css" href="mystyle.css"><!-- 定义了外部文件 --> <style type="t
IT架构圈
2018/05/31
2K0
认识html元素
前端现在越来越火,可以用去年热门的词语来形容——“风口上的猪”。希望这个系列的文集能够给“毫无任何基础,但是想转到前端的人”一点帮助。 认识一个html文档的基本结构: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Here is title</title></head><body> Here is content.</body></html> HTML 文档是由 HTML 元素 定义的,而HT
用户1667431
2018/04/18
2.3K0
认识html元素
认识html元素
前端现在越来越火,可以用去年热门的词语来形容——“风口上的猪”。希望这个系列的文集能够给“毫无任何基础,但是想转到前端的人”一点帮助。 认识一个html文档的基本结构: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Here is title</title></head><body> Here is content.</body></html> HTML 文档是由 HTML 元素 定义的,而HT
用户1667431
2018/04/18
2.4K0
认识html元素
HTML DOM - 元素
如需向 HTML DOM 添加新元素,您首先必须创建该元素,然后把它追加到已有的元素上。
陈不成i
2021/07/21
2.3K0
HTML的行元素和块元素
本博客所有文章如无特别注明均为原创。作者:十月梦想 ,复制或转载请以超链接形式注明转自 十月梦想博客 。 原文地址《HTML的行元素和块元素》
十月梦想
2018/08/29
3.4K0
HTML块级元素和行内元素
块级元素(block-level) 每个块元素通常都会独自占据一整行或多整行,可以对其设置宽度、高度、对齐等属性,常用于网页布局和网页结构的搭建。 常见的块元素有<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等, 其中<div>标签是最典型的块元素。 块级元素的特点: (1)总是从新行开始 (2)高度,行高、外边距以及内边距都可以控制。 (3)宽度默认是容器的100% (4)可以容纳内联元素和其他块元素。 行内元素(inline-level) 行内元素(内联元素)不占有独立的区域,仅
秋白
2018/05/24
3.5K0
嵌套的 HTML 元素
<!DOCTYPE html> <html> <body> <p>这是第一个段落。</p> </body> </html>
用户8442333
2021/08/21
2.1K0
html 元素左移右移
Title div{ width: 200px; float: left; text-align: center; } select{ width: 100px; height: 140px; } $(function (){ $("#left button:eq(0)").click(function (){ // alert($
await
2021/09/23
3K0
html 元素左移右移
Title div{ width: 200px; float: left; text-align: center; } select{ width: 100px; height: 140px; } $(function (){ $("#left button:eq(0)").click(function (){ // alert($
await
2021/09/23
2.6K0
cefsharp修改html元素,CefSharp网页元素点击
代码完美地点击了开发人员控制台上的确切按钮,但没有点击CEF。只是出于某种原因忽略了它。。。
全栈程序员站长
2022/10/05
4.3K0
cefsharp修改html元素,CefSharp网页元素点击
HTML锚点
        以前只是知道有锚点这么个东西,一直没有用到,昨天做毕设用到了锚点,现在总结一下控制锚点的几种情况:         1. 在同一页面中 <a name="add"></a><!-- 定
高爽
2017/12/28
3.8K0
【HTML】HTML5 <div>元素布局的使用
标签可以把文档分割为独立的、不同的部分。它可以用作严格的组织工具,并且不使用任何格式与其关联。
梦溪
2021/08/09
4.2K0
JavaScript HTML DOM 元素 (节点)
要创建新的 HTML 元素 (节点)需要先创建一个元素,然后在已存在的元素中添加它。
陈不成i
2021/07/20
2.3K0

相似问题

旋转点围绕枢轴点?

12

围绕原点旋转点

20

方法围绕一个点旋转,html画布

10

围绕任意点旋转SKShapeNode

11

围绕轴心点旋转图像

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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