用r中的DF制作矩阵

发布于 2025-01-29 21:47:53 字数 905 浏览 4 评论 0原文

因此,我有一张看起来像这样的表格,

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

我设法修复矩阵的Circos情节,但我不知道如何填充值,

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

我将不胜感激。

多谢

So I have a table that looks something like this

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

I want a matrix like this so I can plot a circos plot

       TRA11  TRA8  TRA9 
TRB1     1      0     0
TRB15    0      1     0
TRB7     0      0     2

I managed to fix start with the matrix but I have no idea how to fill the values in,

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

I would appreciate any help.

Thanks a lot

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如果没有你 2025-02-05 21:47:54

因此,我设法这样做,

tb <- with(df, table(df$Var1, df$Var2))
a <- as.matrix(tb)

它像魅力一样工作。

谢谢大家

So I managed to do it this way,

tb <- with(df, table(df$Var1, df$Var2))
a <- as.matrix(tb)

and it worked like a charm.

Thanks guys

酒废 2025-02-05 21:47:53
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
table(df[-1])

       Var2
Var1    TRB1 TRB15 TRB7
  TRA11    1     0    0
  TRA8     0     1    0
  TRA9     0     0    2

If you want it as a dataframe:

as.data.frame.matrix(table(df[-1]))

      TRB1 TRB15 TRB7
TRA11    1     0    0
TRA8     0     1    0
TRA9     0     0    2
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文