0

I want to arrange the correlation table into rows.

Table

 var1 var2 var3 var4
var1 1 x x x
var2 x 1 x x
var3 x x 1 x
var4 x x x 1

Desired output

var1 var2 x
var1 var3 x
var1 var4 x
var2 var3 x
var2 var4 x
var3 var4 x
Luqman
  • 29
  • 7

1 Answers1

1

You can get the rownames as separate columns, get the data in long format and then remove rows which has 1 in it.

library(magrittr)
df1 <- df %>%
        tibble::rownames_to_column('rows') %>%
        tidyr::pivot_longer(cols = -rows, names_to = 'cols') %>%
        dplyr::filter(value != 1)
df1

# A tibble: 12 x 3
#   rows  cols  value
#   <chr> <chr> <chr>
# 1 var1  var2  x    
# 2 var1  var3  x    
# 3 var1  var4  x    
# 4 var2  var1  x    
# 5 var2  var3  x    
# 6 var2  var4  x    
# 7 var3  var1  x    
# 8 var3  var2  x    
# 9 var3  var4  x    
#10 var4  var1  x    
#11 var4  var2  x    
#12 var4  var3  x  

To write it as csv we can do :

write.csv(df1, 'data.csv', row.names = FALSE)  

data

df <- structure(list(var1 = c("1", "x", "x", "x"), var2 = c("x", "1", 
"x", "x"), var3 = c("x", "x", "1", "x"), var4 = c("x", "x", "x", 
"1")), class = "data.frame", row.names = c("var1", "var2", "var3","var4"))
Ronak Shah
  • 377,200
  • 20
  • 156
  • 213
  • Hi, thanks for helping me out. I tried the code you entered. I gives: Error in df %>% tibble::rownames_to_column("rows") %>% tidyr::pivot_longer(cols = -rows, : could not find function "%>%" – Luqman Jul 17 '20 at 03:22
  • 1
    @Luqman that is from `magrittr` package, run `library(magrittr)` first. Also if you have matrix above you need to convert it to dataframe first before trying the above code. – Ronak Shah Jul 17 '20 at 03:23
  • Also, my data is 617x617 (rows x columns) with each having its unique label and cor value. I entered var1,2,3 and x,x as an example – Luqman Jul 17 '20 at 03:23
  • Looks like it worked. How do I export this tibble into .csv or .txt format? – Luqman Jul 17 '20 at 03:27
  • 1
    See updated answer. – Ronak Shah Jul 17 '20 at 03:29
  • Thank a lot brother. – Luqman Jul 17 '20 at 03:36