How do I select all unique combinations of two columns in an R data frame?

后端 未结 5 1765
一个人的身影
一个人的身影 2020-12-18 15:48

I have a correlation matrix that I put in a dataframe like so:

row | var1 | var2 | cor
1   | A    | B    | 0.6
2   | B    | A    | 0.6
3   | A    | C    | 0         


        
5条回答
  •  自闭症患者
    2020-12-18 16:34

    Here is yet another tidyverse partial solution, as I have dropped the row column:

    library(tidyverse)
    
    data.cor <-
      read.table(
        h = T,
        sep = "|",
        stringsAsFactors = F,
        text = "row | var1 | var2 | cor
                1   | A    | B    | 0.6
                2   | B    | A    | 0.6
                3   | A    | C    | 0.4
                4   | C    | A    | 0.4"
      ) %>%
      mutate_if(is.character, ~ trimws(.))
    
    data.cor
    #>   row var1 var2 cor
    #> 1   1    A    B 0.6
    #> 2   2    B    A 0.6
    #> 3   3    A    C 0.4
    #> 4   4    C    A 0.4
    
    df <- data.cor %>%
      gather(var, val, var1:var2) %>%
      distinct(cor, val) %>%
      group_by(cor) %>%
      mutate(x = paste("var", 1:n(), sep = "")) %>%
      spread(x, val) %>% 
      ungroup()
    
    df
    #> # A tibble: 2 x 3
    #>     cor var1  var2 
    #>     
    #> 1   0.4 A     C    
    #> 2   0.6 A     B
    

    Created on 2019-04-18 by the reprex package (v0.2.1)

提交回复
热议问题