用 R 中的 df 创建一个矩阵
Make a matrix out of a df in R
所以我有一个 table 看起来像这样
name <- c("AGTC","ATTC","ATGC", "ATCC")
Var1 <- c("TRA11","TRA8","TRA9", "TRA9")
Var2 <- c("TRB1", "TRB15", "TRB7", "TRB7")
df <-data.frame(name, Var1, Var2)
df
name Var1 Var2
1 AGTC TRA11 TRB1
2 ATTC TRA8 TRB15
3 ATGC TRA9 TRB7
4 ATCC TRA9 TRB7
我想要一个这样的矩阵,这样我就可以绘制圆环图
TRA11 TRA8 TRA9
TRB1 1 0 0
TRB15 0 1 0
TRB7 0 0 2
我设法从矩阵开始修复,但我不知道如何填充值,
A <- sort(unique(unlist(strsplit(paste(df$Var1, collapse=","), ","))))
B <- sort(unique(unlist(strsplit(paste(eee$Var2, collapse=","), ","))))
mat <- matrix(nrow = length(A), ncol = length(B))
colnames(mat) <- B
rownames(mat) <- A
mat
TRA11 TRA8 TRA9
TRB1 0 0 0
TRB15 0 0 0
TRB7 0 0 0
如有任何帮助,我将不胜感激。
非常感谢
table(df[-1])
Var2
Var1 TRB1 TRB15 TRB7
TRA11 1 0 0
TRA8 0 1 0
TRA9 0 0 2
如果你想把它作为数据框:
as.data.frame.matrix(table(df[-1]))
TRB1 TRB15 TRB7
TRA11 1 0 0
TRA8 0 1 0
TRA9 0 0 2
所以我设法做到了,
tb <- with(df, table(df$Var1, df$Var2))
a <- as.matrix(tb)
而且效果很好。
谢谢大家
所以我有一个 table 看起来像这样
name <- c("AGTC","ATTC","ATGC", "ATCC")
Var1 <- c("TRA11","TRA8","TRA9", "TRA9")
Var2 <- c("TRB1", "TRB15", "TRB7", "TRB7")
df <-data.frame(name, Var1, Var2)
df
name Var1 Var2
1 AGTC TRA11 TRB1
2 ATTC TRA8 TRB15
3 ATGC TRA9 TRB7
4 ATCC TRA9 TRB7
我想要一个这样的矩阵,这样我就可以绘制圆环图
TRA11 TRA8 TRA9
TRB1 1 0 0
TRB15 0 1 0
TRB7 0 0 2
我设法从矩阵开始修复,但我不知道如何填充值,
A <- sort(unique(unlist(strsplit(paste(df$Var1, collapse=","), ","))))
B <- sort(unique(unlist(strsplit(paste(eee$Var2, collapse=","), ","))))
mat <- matrix(nrow = length(A), ncol = length(B))
colnames(mat) <- B
rownames(mat) <- A
mat
TRA11 TRA8 TRA9
TRB1 0 0 0
TRB15 0 0 0
TRB7 0 0 0
如有任何帮助,我将不胜感激。
非常感谢
table(df[-1])
Var2
Var1 TRB1 TRB15 TRB7
TRA11 1 0 0
TRA8 0 1 0
TRA9 0 0 2
如果你想把它作为数据框:
as.data.frame.matrix(table(df[-1]))
TRB1 TRB15 TRB7
TRA11 1 0 0
TRA8 0 1 0
TRA9 0 0 2
所以我设法做到了,
tb <- with(df, table(df$Var1, df$Var2))
a <- as.matrix(tb)
而且效果很好。
谢谢大家