【发布时间】:2025-12-28 13:50:06
【问题描述】:
我正在尝试组织一个矩阵,显示诱捕集中的哪些人被抓到一起。 目前我有一个空白矩阵,其中行和列以数据集中的每个人命名
my_sociomatrix = matrix(, nrow = 389, ncol = 389)
diag(my_sociomatrix) <- 0
names_list<- unique(df$individual)
names_list
rownames(my_sociomatrix)<-names_list
colnames(my_sociomatrix)<-names_list
我想做的是根据个人被抓到一起的次数分配“1、2、3……或0”。
我有一个单独的数据框,其中包含确定在每个诱捕事件中被捕的个人所需的信息。有些人被抓了多次,所以他们出现了不止一次。
| individual | trap event |
|---|---|
| NA002 | A |
| NA03,41 | A |
| NA03,42 | B |
| NA03,41 | C |
| NA03,42 | C |
| NA03,43 | C |
| NA002 | D |
| NA03,41 | D |
| NA03,44 | D |
| NA03,45 | D |
我想使用数据框的引用来填充矩阵,这样矩阵就会像这样填充。我无法手动执行此操作,因为整个矩阵是 389x389 单元格。
| NA002 | NA03,41 | NA03,42 | NA03,43 | NA03,44 | NA03,45 | |
|---|---|---|---|---|---|---|
| NA002 | - | |||||
| NA03,41 | 2 | - | ||||
| NA03,42 | 0 | 1 | - | |||
| NA03,43 | 0 | 1 | 1 | - | ||
| NA03,44 | 1 | 1 | 0 | 0 | - | |
| NA03,45 | 1 | 1 | 0 | 0 | 1 | - |
单独的 NA002 和 NA03,41 被抓到了两次,所以他们将被分配 2。单独的 NA002 和 NA03,42 从未被抓到一起,所以他们得到 0。单独的 NA002 和 NA03,44 被抓到一起,所以他们得到一个 1,依此类推......
如何使用基于我的数据框的条件填写我的矩阵?我已经使用 R 几年了,但这种类型的工作对我来说是全新的,因为我以前从未使用过矩阵。
我正在考虑使用基本的
net[,]= 但带有 ifelse 语句,但不确定如何执行此操作。
【问题讨论】:
标签: r matrix conditional-formatting