gpt4 book ai didi

r - 使用 R 将每个条目的列合并到大型数据集中的新行中

转载 作者:行者123 更新时间:2023-12-04 10:52:30 25 4
gpt4 key购买 nike

我有一个格式化的文本文件:

geneID1 A   C   C   C   C   C  
geneID2 T T T T T T

有 52, 749 行基因 ID 和 152 列数据,我的文本文件没有标题。我想将每两列数据合并为一列,将数据交替到每行中,最终得到 76 列数据。例如:
geneID1 A   C   C  
geneID1 C C C
geneID2 T T T
geneID2 T T T

我可以使用 paste0 将列合并在一起命令,但这不是我想要的,因为这只是将两列数据粘贴在一起。
任何帮助是极大的赞赏。谢谢。

最佳答案

假设您的文件是 data.frame:

tab=read.table(text="geneID1 A   C   C   C   C   C  
geneID2 T T T T T T",row.names=1)

我们必须使用以下方法使所有内容都成为字符:
apply(tab,2,as.character)

我们可以使它成为一个向量行,这样做:
c(t(apply(tab,2,as.character)))
[1] "A" "C" "C" "C" "C" "C" "T" "T" "T" "T" "T" "T"

现在,我们只需要把它放回去,把它变成一个矩阵,用原来的列数的 1/2
newdf = matrix(c(t(apply(tab,2,as.character))),ncol=ncol(tab)/2,byrow=TRUE)
newdf
[,1] [,2] [,3]
[1,] "A" "C" "C"
[2,] "C" "C" "C"
[3,] "T" "T" "T"
[4,] "T" "T" "T"

我们给它一个 ID,因为不允许重复的行名:
newdf= data.frame(
ID=rep(rownames(tab),each=2),
matrix(c(t(apply(tab,2,as.character))),ncol=ncol(tab)/2,byrow=TRUE)
)
newdf
ID X1 X2 X3
1 geneID1 A C C
2 geneID1 C C C
3 geneID2 T T T
4 geneID2 T T T

关于r - 使用 R 将每个条目的列合并到大型数据集中的新行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59416177/

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