作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含两列联系字符串的数据框。在一列(名为 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/
我是一名优秀的程序员,十分优秀!