【问题标题】:Split one row into two将一排分成两排
【发布时间】:2015-10-03 22:33:30
【问题描述】:

我想将数据帧的每一行分成两部分。这是我的意见:

input <- 'name sample1 sample2 sample3
              pr_001  533  411    633
              pr_002  478  447  427'  
input <- read.table(text=input, header=T)

要获得这个输出:

output <- 'name sample1 sample2 sample3
              pr_001-A  533  411    633
              pr_001-B  533  411   633
              pr_002-A  478  447  427  
              pr_002-B  478  447  427'
 output <- read.table(text=output, header=T)

因此,对于sample1 中的pr_001,结果是具有相同值pr_001-Apr_001-A 的两行,并且所有样本和名称必须遵循相同的逻辑。有什么想法来解决这个问题?谢谢!

【问题讨论】:

    标签: r split row


    【解决方案1】:

    首先用(基于akrun's suggestion)复制行:

    output <- input[rep(1:nrow(input), each = 2),]
    

    然后将-A-B 添加到每个name 中:

    output$name <- paste(output$name, c("A", "B"), sep = "-")
    

    【讨论】:

      【解决方案2】:
      library(dplyr)
      
      bind_rows(input %>% 
                  mutate(sample1 = paste(sample1, "A", sep = "-"),
                input %>% 
                  mutate(sample1 = paste(sample1, "B", sep = "-") ) %>%
        arrange(sample1)  
      

      【讨论】:

      • 提示。因为您没有添加解释性文本或显示它们确实有效,所以这些都被标记为低质量,我们必须审查它们并决定是否在审查队列中删除它们。这很乏味,我在过去 10 分钟内看到了您的 4 个帖子。请更加努力地提供明显高质量的答案。
      猜你喜欢
      • 1970-01-01
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      • 2019-03-19
      • 2012-09-08
      相关资源
      最近更新 更多