【发布时间】: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
我想将关联表排列成行。
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 的行。
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"))
【讨论】:
magrittr 包,首先运行library(magrittr)。此外,如果您有上面的矩阵,则需要先将其转换为数据帧,然后再尝试上述代码。