【问题标题】:Collapsing duplicates in R where only the unique column values get condensed在 R 中折叠重复项,其中仅压缩唯一列值
【发布时间】:2021-12-24 10:16:11
【问题描述】:

我需要折叠一个大表(V19 为 5M),在该表中我根据特定列 (V1) 删除重复项,如果唯一,则合并所有其他列的值(如果不是,则只报告一次结果)。

我从这里尝试了一些解决方案,但这些示例主要针对 2 个变量执行 - 我有 19 个。最终发生的情况是,表格的整个其余部分都被省略了,因为它仅由一个特定的变量进行汇总,而不是将折叠应用于所有列。

输入:

V1         V2         V3         V4         V5         V6
TR1000     chr1       1000       1200       A          + 
TR1000     chr1       1100       1200       B          + 
TR1000     chr1       1000       1200       C          +  
TR2000     chr2       2000       2500       D          +   
TR2000     chr2       2100       2500       E          + 
TR3000     chr3       3000       3500       F          + 
TR3000     chr3       3000       3500       F          + 

我需要:

V1         V2         V3              V4         V5        V6
TR1000     chr1       1000|1100       1200       A|B|C     + 
TR2000     chr2       2000|2100       2500       D|E       +  
TR3000     chr3       3000            3500       F         + 

【问题讨论】:

  • 在基础 R aggregate(.~V1, df, \(x)paste0(unique(x), collapse = "|"))

标签: r dataframe aggregate


【解决方案1】:

您可以使用dplyr 尝试这种方式

数据

df <- read.table(text = "V1         V2         V3         V4         V5         V6
TR1000     chr1       1000       1200       A          + 
TR1000     chr1       1100       1200       B          + 
TR1000     chr1       1000       1200       C          +  
TR2000     chr2       2000       2500       D          +   
TR2000     chr2       2100       2500       E          + 
TR3000     chr3       3000       3500       F          + 
TR3000     chr3       3000       3500       F          + 
", header =T)

代码

library(dplyr)
df %>%
  group_by(V1) %>%
  summarise(across(everything(), ~paste0(unique(.), collapse = "|")))


  V1     V2    V3        V4    V5    V6   
  <chr>  <chr> <chr>     <chr> <chr> <chr>
1 TR1000 chr1  1000|1100 1200  A|B|C +    
2 TR2000 chr2  2000|2100 2500  D|E   +    
3 TR3000 chr3  3000      3500  F     + 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-25
    • 2012-08-16
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多