使用 dplyr 按组连接字符串以获取多列[重复]

2024-01-11

您好,我需要按组连接多个列的字符串。我意识到这个问题的版本已经被问过好几次了(参见按唯一标识符聚合并将相关值连接成字符串 https://stackoverflow.com/q/16596515),但它们通常涉及连接单个列的值。

我的数据集是这样的:

Sample  group   Gene1   Gene2   Gene3
A       1       a       NA      NA
A       2       b       NA      NA
B       1       NA      c       NA
C       1       a       NA      d
C       2       b       NA      e
C       3       c       NA      NA

我想将其转换为每个样本仅占用 1 行的格式(组列是可选的):

Sample  group   Gene1   Gene2   Gene3
A       1,2     a,b     NA      NA
B       1       NA      c       NA
C       1,2,3   a,b,c   NA      d,e

由于基因的数量可能高达数千个,因此我不能简单地指定我希望连接的列。 我知道aggregate or dplyr可用于获取组,但我不知道如何对多列执行此操作。

提前致谢!

Edit

由于我的数据集非常大,包含数千个基因,我意识到 dplyr 太慢了。我一直在尝试使用data.table,下面的代码也可以得到我想要的:

setDT(df)[, lapply(.SD, function(x) paste(na.omit(x), collapse = ",")), by = Sample]

现在的输出是:

   Sample group Gene1 Gene2 Gene3
1:      A   1,2   a,b            
2:      B     1           c      
3:      C 1,2,3 a,b,c         d,e

感谢你的帮助!


为了这些目的,有summarise_all, summarise_at, and summarise_if功能。使用summarise_all:

df %>%
  group_by(Sample) %>%
  summarise_all(funs(paste(na.omit(.), collapse = ",")))
# A tibble: 3 × 5
  Sample group Gene1 Gene2 Gene3
   <chr> <chr> <chr> <chr> <chr>
1      A   1,2   a,b            
2      B     1           c      
3      C 1,2,3 a,b,c         d,e

更新:在当前版本中dplyr,鼓励结合summarise with across,例如像这样:

df %>%
  group_by(Sample) %>%
  summarise(across(everything(), \(x) paste(na.omit(x), collapse = ",")))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 dplyr 按组连接字符串以获取多列[重复] 的相关文章

随机推荐

  • 如何从 jetpack compose 更改 OutlinedTextField 的轮廓颜色?

    以下是 jetpack compose 中 OutlinedTextField 代码的样子 OutlinedTextField value onValueChange label Text Input 此 TextField 轮廓的默认颜色
  • 使用 Octave 绘图时出现问题

    我刚刚开始使用 Octave 当我启动八度并尝试绘制某些内容时 绘图有效 但我多次重复收到以下警告 warning ft render unable to load appropriate font warning ft render in
  • gitolite:通道 0 上的 PTY 分配请求失败

    jenkins ci 服务器 和我的 git 存储库都托管在同一台服务器上 git repo 由 gitolite 控制 如果我从外部访问存储库 例如从我的工作站 我会得到 ssh git arrakis PTY allocation re
  • 用于发送短信的 AT 命令在 Windows 8.1 中不起作用

    我已经研究了两天多了 试图制作一个使用 AT 命令发送短信的应用程序 我实现了一些网络上可用的教程和项目 不幸的是 它们都不起作用 https docs google com document d 1VfBbMcKZsutP8Cwg2iu7
  • OpenGL 闪烁像素伪影

    我正在尝试在基于体素的网格上实现环境光遮挡 并在面部边缘获得这些闪烁的白色像素 这是我的片段着色器 version 120 varying vec4 color varying vec4 normal void main void floa
  • 没有使用python requests模块获取所有cookie信息

    我正在学习如何使用 python requests 模块登录示例网站 这视频教程 https www youtube com watch v eRSJSKG4mDA让我开始了 从我在 Google Chrome gt Inspect Ele
  • decltype((c)) 中括号的含义? [复制]

    这个问题在这里已经有答案了 我正在读书维基百科上的这篇文章关于C 11 类型推断 feature http en wikipedia org wiki C 11 Type inference 有一个例子 我引用一下 include
  • C# 类/对象可视化软件

    在 Visual Studio 2005 及更早版本中 您可以将代码导出到 Visio 并查看对象之间的关系及其具有的方法 属性和字段 这很棒 因为它允许您调整外观以改善外观 在 VS 2008 中 该选项消失了 据说 被类图系统取代 它很
  • WPF - FrameworkElement - 枚举所有后代?

    我有一个FrameworkElement 真的是一个ToggleButton 其内容中有一个Popup 我这样访问它 ToggleButton button ToggleButton sender Popup popup Popup but
  • 如何查找某个国家/地区人口超过X的城市

    我正在尝试查找丹麦人口超过 10 万的城市 我可以使用此代码找到丹麦的所有城市 SELECT s o WHERE s a
  • scala排序稳定吗?

    Scala 集合有sortBy方法 这个方法稳定吗 def sortList source List Int List Int source sortBy 2 这个例子总是能保持秩序吗 是的 它很稳定 参考scala源码 https git
  • 如何将针对 DTO 的 OData 查询映射到 EF 实体?

    我在 Asp Net Web Api 应用程序中有一个允许 OData 查询的 ODataController 我只允许读取 不允许更新 我没有直接公开数据模型 而是创建了一组 DTO DTO 上的属性名称不一定与 EF 模型上的属性匹配
  • Jupyter笔记本,如何在正确的conda环境中执行系统shell命令?

    我目前在使用 jupyter 笔记本和系统 shell 命令时遇到一些问题 我使用 nb conda kernels 能够从基础环境中启动的 jupyter 笔记本访问我的所有 conda 环境 这在我的大多数用例中都完美运行 为了简单起见
  • KSoap-Android\JCIFS 发送空 HTTP 帖子

    我创建了一个基于 KSOAP Android 和 JCIFS 的 NTLM 身份验证 SOAP 客户端 实现看起来像这样 public class NtlmServiceConnection implements ServiceConnec
  • double 到 unsigned int / char

    I read here https stackoverflow com questions 10541200 casting double to unsigned int that 根据 C99 6 3 1 4 脚注 50 当整数类型的值是
  • 重载函数签名 haskell

    当我编译时 我收到以下错误消息 重复的类型签名 WeightedMedian hs 71 0 39 findVal ValPair gt 双 gt 双WeightedMedian hs 68 0 36 findVal ValPair gt
  • 如何在命令行中使用带有 cut 的正则表达式?

    我有一些这样的输出ls alth drwxr xr x 5 root admin 170B Aug 3 2016 drwxr xr x 5 root admin 70B Aug 3 2016 drwxr xr x 5 root admin
  • 从另一个本地主机访问 markLogic

    我正在尝试使用 markLogic 作为文档存储库并编写一个可以从我的本地主机 Apache 访问它的客户端 在 markLogic 中 我创建了一个新的 REST 服务器 8011 现在我想通过 希望简单的 HTTP 请求 实际上使用 j
  • PHP mysqli 插入不起作用,但没有给出任何错误

    正如标题所示 我尝试进行简单的插入 但实际上没有任何内容插入到表中 我尝试打印出错误 但没有报告任何内容 我的用户表的字段比这 4 个多得多 但它们都应该是默认的 query INSERT INTO users username passw
  • 使用 dplyr 按组连接字符串以获取多列[重复]

    这个问题在这里已经有答案了 您好 我需要按组连接多个列的字符串 我意识到这个问题的版本已经被问过好几次了 参见按唯一标识符聚合并将相关值连接成字符串 https stackoverflow com q 16596515 但它们通常涉及连接单