【问题标题】:de-duplicate rows and align columns in R删除重复行并对齐 R 中的列
【发布时间】:2023-02-15 22:59:28
【问题描述】:

我有一个数据框,其中有重复的样本,但原因是每行只出现变量:

Sample Var1 Var2
A 1 NA
B NA 1
A NA 3
C NA 2
C 5 NA
B 4 NA

我想以行名称去重复和相应的列值并排结束:

Sample Var1 Var2
A 1 3
B 4 1
C 5 2

我试过 group_by() 函数,但失败得很惨!

我将非常感谢任何帮助,如果需要,我很乐意进一步澄清任何事情!

【问题讨论】:

    标签: r duplicates metadata data-manipulation


    【解决方案1】:

    data.table方法

    library(data.table)
    
    DT <- fread("Sample     Var1    Var2
    A   1   NA
    B   NA  1
    A   NA  3
    C   NA  2
    C   5   NA
    B   4   NA")
    
    # or setDT(DT) if DT is not a data.table format
    # melt to long format, and remove NA's
    DT.melt <- melt(DT, id.vars = "Sample", na.rm = TRUE)
    # cast to wide again
    dcast(DT.melt, Sample ~ variable, fill = NA)
    #    Sample Var1 Var2
    # 1:      A    1    3
    # 2:      B    4    1
    # 3:      C    5    2
    

    【讨论】:

      【解决方案2】:

      我们可以使用group_bysummarise 来完成这个任务。获取 max() 将为我们提供所需的输出:

      library(dplyr)
      
      df %>% 
        group_by(Sample) %>% 
        summarise(across(, ~max(., na.rm=TRUE)))
      
        Sample  Var1  Var2
        <chr>  <int> <int>
      1 A          1     3
      2 B          4     1
      3 C          5     2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-17
        • 2018-03-21
        • 2015-01-19
        • 2016-12-02
        • 2023-03-21
        • 2017-01-31
        • 2018-06-10
        相关资源
        最近更新 更多