【问题标题】:Create a matrix for the combinations of two vectors为两个向量的组合创建一个矩阵
【发布时间】:2021-04-16 18:53:50
【问题描述】:

我在 R 中工作,并且有两个长度相同的向量(A 和 B)。我想从 A 和 B 组成一个矩阵,计算术语的唯一组合。

例如,如果 A 是 A <- c(1,1,1,2,3) 而 B 是 B <- <- c("a","a","b","b","b"),我想生成一个 3x2 矩阵,其中行名 1, 2, 3 和列名 a, b。第 1 行是 2, 1,第 2 行和第 3 行是 0, 1

非常感谢您的帮助!

【问题讨论】:

  • table() 函数执行此操作:table(A,B)

标签: r data-processing


【解决方案1】:

我认为table(A,B) 是迄今为止最简单的解决方案。这是另一种选择(感谢@Onyambu 的评论)

> xtabs(~.,cbind(A,B))
   B
A   a b
  1 2 1
  2 0 1
  3 0 1

【讨论】:

  • mhh,我相信 xtabs(~., cbind(A, B)) 就足够了。我经常不创建额外的变量
  • @Onyambu 非常感谢。我根据您的建议更新了我的答案。
【解决方案2】:

我们可以使用pivot_wider

library(dplyr)
library(tidyr)
tibble(A, B) %>%
  pivot_wider(names_from = B, values_from = B,
     values_fn = length, values_fill = 0)%>%
  column_to_rownames('A') %>% 
  as.matrix

【讨论】:

  • @ThomasIsCoding 之前我使用的是count,所以格式可能不正确
  • 好吧,我明白了。我刚刚注意到 OP 想要一个 3×2 矩阵...
猜你喜欢
  • 1970-01-01
  • 2015-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
相关资源
最近更新 更多