r - 如何将重复项合并到 R 中的每列一个单元格中
问题描述
我有描述基因的数据,其中我有重复的基因。对于那些有重复的人,我想压缩信息,这样就不会丢失任何信息,所有重复的基因信息都会合并成一行。我见过类似的问题(例如How to combine duplicate rows in a data frame in R),但这是选择最大的重复数,没有找到通常将重复信息保留在一行中的问题。
例如我有这样的数据:
gene pvalue info
ACE 0.7 benign
ACE 0.001 pathogenic
ACE 0.5 benign
BRCA 0.01 benign
NOS 0.2 benign
NOS 0.003 pathogenic
NOS 0.57 benign
我希望将重复项合并/压缩到
gene pvalue info
ACE 0.7, 0.001, 0.5 benign, pathogenic,benign
BRCA 0.01 benign
NOS 0.2, 0.003, 0.57 benign, pathogenic, benign
目的是压缩后,我将在数字单元格中编码,以选择该基因的最大或最小数字。
目前用于压缩我尝试使用的重复基因信息,aggregate()
但这需要我不想做的 FUN 设置,我不知道如何解决。
解决方案
这是一种使用方法data.table
:
library(data.table)
setDT(df)[, pvalue := as.character(pvalue)][, pvalue := paste0(as.character(pvalue), collapse = ", "), by = gene][, info := paste0(info, collapse = ", "), by = gene]
unique(df)
# gene pvalue info
#1: ACE 0.7, 0.001, 0.5 benign, pathogenic, benign
#2: BRCA 0.01 benign
#3: NOS 0.2, 0.003, 0.57 benign, pathogenic, benign
数据
df <- structure(list(gene = structure(c(1L, 1L, 1L, 2L, 3L, 3L, 3L), .Label = c("ACE","BRCA", "NOS"), class = "factor"), pvalue = c(0.7, 0.001, 0.5, 0.01, 0.2, 0.003, 0.57), info = structure(c(1L, 2L, 1L, 1L, 1L, 2L, 1L), .Label = c("benign", "pathogenic"), class = "factor")), class = "data.frame", row.names = c(NA,-7L))
推荐阅读
- powershell - 使用 powershell 打开多个 rdp 会话
- visual-studio-code - 如何在 VS Code 版本 1.29.1 中将终端窗口停靠在右侧?
- sql - 将 db2 转换为 SQL Server
- ios - 我们可以暂时从 Apple App Store 中隐藏 iOS 应用程序吗?
- groovy - 根据另一组随机数据随机化数据以在 Jmeter 中作为请求正文发送
- android - 无法使用 setCornerRadius 方法圆圆可绘制的角
- c# - 当我使用 XPath 提取数据时,它在 messagebox.show 中没有给出任何响应
- soap - JBOSS 服务器上的 SOAP 示例
- arrays - Swift - dictionary with array - get reference to array
- javascript - 提取存储在字符串中的数据