gpt4 book ai didi

r - 如何创建每行库存的二进制矩阵? (右)

转载 作者:行者123 更新时间:2023-12-04 14:17:22 27 4
gpt4 key购买 nike

我有一个由 9 列组成的数据框,其中包含一个因素 list 。每行可以填充所有 9 列(因为在该行中包含 9 个“事物”),但大多数没有(大多数有 3-4 个)。列也不是特定的,就像第 1 列和第 3 列中出现第 200 项一样,这是同一回事。我想为包含所有因素的每一行创建一个二进制矩阵。

Ex(缩短到 4 列只是为了说明问题)

R1 3  4   5   8
R2 4 6 7 NA
R3 1 5 NA NA
R4 2 6 8 9

应该变成
     1  2  3  4  5  6  7  8  9 
r1 0 0 1 1 1 0 0 1 0
r2 0 0 0 1 0 1 1 0 0
r3 1 0 0 0 1 0 0 0 0
r4 0 1 0 0 0 1 0 1 1

我研究了 writeBin/readBin、K-clustering(这是我想做的事情,但我需要先摆脱 NA)、模糊聚类、标签聚类。只是有点不知道该往哪个方向走。

我尝试编写两个 for 循环,按列/行从矩阵中提取数据,然后分别在新矩阵中保存 0 和 1,但我认为存在范围问题。

你们是最棒的。谢谢!

最佳答案

这是一个基本的R解决方案:

# Read in the data, and convert to matrix form
df <- read.table(text = "
3 4 5 8
4 6 7 NA
1 5 NA NA
2 6 8 9", header = FALSE)
m <- as.matrix(df)

# Create a two column matrix containing row/column indices of cells to be filled
# with 'one's
id <- cbind(rowid = as.vector(t(row(m))),
colid = as.vector(t(m)))
id <- id[complete.cases(id), ]

# Create output matrix
out <- matrix(0, nrow = nrow(m), ncol = max(m, na.rm = TRUE))
out[id] <- 1
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
# [1,] 0 0 1 1 1 0 0 1 0
# [2,] 0 0 0 1 0 1 1 0 0
# [3,] 1 0 0 0 1 0 0 0 0
# [4,] 0 1 0 0 0 1 0 1 1

关于r - 如何创建每行库存的二进制矩阵? (右),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8981677/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com