gpt4 book ai didi

r - 将 data.frame 列拆分为其他列

转载 作者:行者123 更新时间:2023-12-03 21:56:34 27 4
gpt4 key购买 nike

我有一个很大的data.frame,其中包含一些列,但我的第 9 列由用分号分隔的数据组成:

    gtf$V9
1 gene_id CUFF.1; transcript_id CUFF.1.1; FPKM 7.0762407256; frac 1.000000; conf_lo 4.347062; conf_hi 9.805420; cov 25.616962;
2 gene_id CUFF.1; transcript_id CUFF.1.1; exon_number 1; FPKM 7.0762407256; frac 1.000000; conf_lo 4.347062; conf_hi 9.805420; cov 25.616962;
3 gene_id CUFF.1; transcript_id CUFF.1.1; exon_number 2; FPKM 7.0762407256; frac 1.000000; conf_lo 4.347062; conf_hi 9.805420; cov 25.616962;
4 gene_id CUFF.1; transcript_id CUFF.1.1; exon_number 3; FPKM 7.0762407256; frac 1.000000; conf_lo 4.347062; conf_hi 9.805420; cov 25.616962;

因此,我想将此列剪切为其他列,然后将其与 data.frame 的其他部分(第 9 列之前的其他列)合并 .

我尝试了一些代码但没有结果:

head(gtf$V9, sep = ";",stringsAsFactors = FALSE) 

new_df <- matrix(gtf$V9, ncol=7, byrow=TRUE) # sep = ";"

as.data.framedata.frameas.matrix 相同

我还尝试write.csv并导入它并包含sep=";",但是data.frame是太大了,我的电脑速度很慢..

有什么建议吗?

最佳答案

另一个选择是使用splitstackshape包(它也会加载data.table)。使用:

library(splitstackshape)
cSplit(cSplit(df, 'V9', sep = ';', direction = 'long'),
'V9', sep = ' ')[, dcast(.SD, cumsum(V9_1 == 'gene_id') ~ V9_1)]

给出:

   V9_1  conf_hi  conf_lo       cov exon_number         FPKM     frac gene_id transcript_id
1: 1 9.805420 4.347062 25.616962 NA 7.0762407256 1.000000 CUFF.1 CUFF.1.1
2: 2 9.805420 4.347062 25.616962 1 7.0762407256 1.000000 CUFF.1 CUFF.1.1
3: 3 9.805420 4.347062 25.616962 2 7.0762407256 1.000000 CUFF.1 CUFF.1.1
4: 4 9.805420 4.347062 25.616962 3 7.0762407256 1.000000 CUFF.1 CUFF.1.1

关于r - 将 data.frame 列拆分为其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47712928/

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