gpt4 book ai didi

R-数据帧-转换为稀疏矩阵

转载 作者:行者123 更新时间:2023-12-04 09:47:42 24 4
gpt4 key购买 nike

我有一个数据帧,大部分是零(稀疏数据帧?),类似于

name,factor_1,factor_2,factor_3
ABC,1,0,0
DEF,0,1,0
GHI,0,0,1

实际数据约为90,000行,具有10,000个功能。我可以将其转换为稀疏矩阵吗?我期望通过使用稀疏矩阵而不是数据帧来获得时间和空间效率。

任何帮助,将不胜感激

更新1:这是一些用于生成数据帧的代码。感谢理查德提供此
x <- structure(list(name = structure(1:3, .Label = c("ABC", "DEF", "GHI"),
class = "factor"),
factor_1 = c(1L, 0L, 0L),
factor_2 = c(0L,1L, 0L),
factor_3 = c(0L, 0L, 1L)),
.Names = c("name", "factor_1","factor_2", "factor_3"),
class = "data.frame",
row.names = c(NA,-3L))

最佳答案

避免将所有数据复制到密集矩阵中可能会提高内存效率(但速度较慢):

y <- Reduce(cbind2, lapply(x[,-1], Matrix, sparse = TRUE))
rownames(y) <- x[,1]

#3 x 3 sparse Matrix of class "dgCMatrix"
#
#ABC 1 . .
#DEF . 1 .
#GHI . . 1

如果您有足够的内存,则应使用Richard的答案,即,将data.frame转换为密集矩阵,而不要使用 Matrix

关于R-数据帧-转换为稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27008633/

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