R:将行/列索引的数据框转换为矩阵

标签 r dataframe matrix

我想像这样转换一个对象

df <- data.frame(ROW = c(1,3),COLUMN =c(2,3),VALUE = c(10,20))
df
ROW COLUMN VALUE 
1        2    10
3        3    20

像这样的矩阵

m <-matrix(c(0,10,0,0,0,0,0,0,20),ncol = 3,nrow = 3)
m
     [,1] [,2] [,3]
[1,]    0    0    0
[2,]   10    0    0
[3,]    0    0   20

我知道数据框代表一个稀疏矩阵,但我没有找到与我正在寻找的内容完全相关的任何其他问题。

最佳答案

我们可以使用sparseMatrix

library(Matrix)
as.matrix( sparseMatrix(i = df$COLUMN, j= df$ROW, x= df$VALUE))
#      [,1] [,2] [,3]
#[1,]    0    0    0
#[2,]   10    0    0
#[3,]    0    0   20

或者创建一个全0的矩阵然后赋值

m1 <- matrix(0, 3, 3)
m1[as.matrix(df[2:1])] <- df$VALUE

注意:根据输出,ROW/COLUMN 索引似乎是颠倒的

关于R:将行/列索引的数据框转换为矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47037504/

相关文章:

根据数据框中行中的条件删除重复项

r - 在 R 中检查字符(字母)数据输入的正确方法是什么?

r - 在 R 中将元素从数组的前面移动到数组的后面

python - groupby 之后的数据帧转置

python - 将列中的值附加到包含列表的另一列的开头

python-3.x - 尝试拆分对象数据类型的列以在数据帧中创建单独的列。收到错误 : "' float object is not subscriptable"

r - 将矩阵中的许多图从 R 导出到 excel

r - 如何使用 rollapply 根据 R 中另一列的值标记一列的值?

matlab - 通过用一个 2D 矩阵索引另一个 2D 矩阵来矢量化创建 3D 矩阵

algorithm - 查找具有最少数量非零元素的矩阵以满足行和列总和