【问题标题】:How to make the results of a list of counted values become one-hot like features of a dataframe如何使计数值列表的结果成为数据框的热门特征
【发布时间】:2019-04-01 20:19:11
【问题描述】:

我有以下数据框:

v1        v2       v3
+         S10      tactagcaatacgcttgcgttcggtggttaagtatgtataatgcgcgggcttgtcgt
+        AMPC      tgctatcctgacagttgtcacgctgattggtgtcgttacaatctaacgcatcgccaa
+        AROH      gtactagagaactagtgcattagcttatttttttgttatcatgctaaccacccggcg

我对 v3 执行转换,将字符串每 2 个字母拆分,并获取每对字母的出现次数,如下所示:

lapply(df$v3, function(x) oligonucleotideFrequency(DNAString(x), width = 2))

这是 v3 中第一个字符串的转换输出:

AA AC AG AT CA CC CG CT GA GC GG GT TA TC TG TT 
3  2  2  4  1  0  6  3  0  6  4  7  7  2  5  4 

现在我有了 v3 字符串中每对字母的所有值计数,但每个计数都是分开的,它不提供全局值。现在我想做的是让每对字母成为数据框的一个特征,其中每个特征的值将是每对字母出现在同一字符串中的次数。

应该是这样的:

v1        v2     AA AC AG AT CA CC CG CT GA GC GG GT TA TC TG TT 
+         S10     3  2  2  4  1  0  6  3  0  6  4  7  7  2  5  4                        
+        AMPC     3  4  1  4  5  2  4  4  2  4  1  5  3  5  6  3 
+        AROH     2  4  4  4  3  3  2  4  2  4  1  3  7  1  3  9

我怎样才能达到这个结果?

提前致谢

【问题讨论】:

    标签: r function dataframe


    【解决方案1】:

    使用基础 R 的解决方案。

    library(Biostrings)
    
    dat <- read.table(text = "v1        v2       v3
    '+'         'S10'      'tactagcaatacgcttgcgttcggtggttaagtatgtataatgcgcgggcttgtcgt'
    '+'        'AMPC'      'tgctatcctgacagttgtcacgctgattggtgtcgttacaatctaacgcatcgccaa'
    '+'        'AROH'      'gtactagagaactagtgcattagcttatttttttgttatcatgctaaccacccggcg'",
    stringsAsFactors = FALSE, header = TRUE)
    
    # Count the nucleotide number  
    lst1 <- lapply(dat$v3, function(x) oligonucleotideFrequency(DNAString(x), width = 2))
    # Transpose the vector and convert to a data frame for each element
    lst2 <-  lapply(lst1, function(x) as.data.frame(t(x)))
    # Comebine all single data frame into one data frame row-wise
    dat2 <- do.call(rbind, lst2)
    # Comebine with the original data frame column-wise
    dat3 <- cbind(dat, dat2)
    # Remvoe the v3 column
    dat3$v3 <- NULL
    dat3
    #   v1   v2 AA AC AG AT CA CC CG CT GA GC GG GT TA TC TG TT
    # 1  +  S10  3  2  2  4  1  0  6  3  0  6  4  7  7  2  5  4
    # 2  + AMPC  3  4  1  4  5  2  4  4  2  4  1  5  3  5  6  3
    # 3  + AROH  2  4  4  4  3  3  2  4  2  4  1  3  7  1  3  9
    

    【讨论】:

    • 该死的 www 太棒了!!我欠你一个好人,再次感谢!!你能解释一下代码的列表部分在做什么吗?为了学习,请
    • @Miguel2488 我提供了一些解释。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    • 2018-08-17
    相关资源
    最近更新 更多