gpt4 book ai didi

R 在一列中查找重复项并在第二列中折叠

转载 作者:行者123 更新时间:2023-12-02 07:40:07 25 4
gpt4 key购买 nike

我有一个包含两列联系字符串的数据框。在一列(名为 probes)中,我有重复的案例(即,多个案例具有相同的字符串)。对于探测中的每个案例,我想找到包含相同字符串的所有案例,然后将第二列(名为 genes)中所有对应案例的值合并到一个案例中。例如,如果我有这个结构:

    probes  genes
1 cg00050873 TSPY4
2 cg00061679 DAZ1
3 cg00061679 DAZ4
4 cg00061679 DAZ4

我想把它改成这样的结构:

    probes  genes
1 cg00050873 TSPY4
2 cg00061679 DAZ1 DAZ4 DAZ4

显然对于单个probe using which这样做是没有问题的,然后paste and collapse

ind<-which(olap$probes=="cg00061679")
genename<-(olap[ind,2])
genecomb<-paste(genename[1:length(genename)], collapse=" ")

但我不确定如何在整个数据框中提取探针列中重复项的索引。有什么想法吗?

提前致谢

最佳答案

你可以在 base R 中使用 tapply

data.frame(probes=unique(olap$probes), 
genes=tapply(olap$genes, olap$probes, paste, collapse=" "))

或者使用 plyr:

library(plyr)
ddply(olap, "probes", summarize, genes = paste(genes, collapse=" "))

更新

在第一个版本中这样做可能更安全:

tmp <- tapply(olap$genes, olap$probes, paste, collapse=" ")
data.frame(probes=names(tmp), genes=tmp)

以防万一 unique 以不同的顺序给探测器 tapply。我个人总是会使用 ddply

关于R 在一列中查找重复项并在第二列中折叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12054816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com