【发布时间】:2018-07-31 07:43:18
【问题描述】:
我有一个如下的数据框:
mat <- structure(list(links = structure(c(1L, 5L, 9L, 13L, 2L, 6L, 10L,
14L, 3L, 7L, 11L, 15L, 4L, 8L, 12L, 16L), .Label = c("a,a", "a,b",
"a,c", "a,d", "b,a", "b,b", "b,c", "b,d", "c,a", "c,b", "c,c",
"c,d", "d,a", "d,b", "d,c", "d,d"), class = "factor"), value = c(0,
3.716741, 0, 0, 3.716741, 0, 3.788542, 0, 0, 3.788542, 0, 3.791121,
0, 0, 3.791121, 0)), class = "data.frame", row.names = c(NA,
-16L))
我怎样才能把它变成这样的矩阵:
df
a b c d
a 0 3.716741 0 0
b 3.716741 0 3.788542 0
c 0 3.788542 0 3.791121
d 0 0 3
我用下面的代码反过来做,但我不知道怎么可能:
mat<-as.matrix(mat)
df<-melt(mat)
df$links<- paste(df$Var1,",",df$Var2)
df <- df[ ,c(4,3)]
【问题讨论】:
-
请将您的数据发布为
dput(mat)的结果。 -
您应该在 R 控制台中输入
dput(yourDATA)并在此处发布 RESULT。
标签: r dataframe matrix tidyr reshape2