【问题标题】:arrange correlation table into rows [duplicate]将相关表排列成行[重复]
【发布时间】:2020-11-06 19:31:13
【问题描述】:

我想将关联表排列成行。

表格

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

期望的输出

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

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以将行名作为单独的列获取,以长格式获取数据,然后删除其中包含 1 的行。

    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  
    

    我们可以把它写成 csv:

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

    数据

    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"))
    

    【讨论】:

    • 您好,感谢您帮助我。我试过你输入的代码。我给出: df %>% tibble::rownames_to_column("rows") %>% tidyr::pivot_longer(cols = -rows, : 找不到函数 "%>%" 中的错误
    • @Luqman 来自magrittr 包,首先运行library(magrittr)。此外,如果您有上面的矩阵,则需要先将其转换为数据帧,然后再尝试上述代码。
    • 另外,我的数据是 617x617(行 x 列),每个都有其唯一的标签和 cor 值。我输入了 var1,2,3 和 x,x 作为例子
    • 看起来有效。如何将此 tibble 导出为 .csv 或 .txt 格式?
    • 查看更新的答案。
    猜你喜欢
    • 2018-09-17
    • 2022-10-12
    • 2016-01-02
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    • 2013-09-08
    • 2014-03-15
    • 2020-11-01
    相关资源
    最近更新 更多