小编Ben*_*nte的帖子

数据框的每列中的唯一值

我想获得数据帧的每个列中的唯一值的数量.假设我有以下数据框:

DF <- data.frame(v1 = c(1,2,3,2), v2 = c("a","a","b","b"))
Run Code Online (Sandbox Code Playgroud)

那么它应该返回v1有3个不同的值,v2有2个不同的值.

我尝试了唯一(DF),但它不起作用,因为每行都不同.

r dataframe

25
推荐指数
4
解决办法
7万
查看次数

R:稀疏矩阵转换

我在R中有一个因子矩阵,并希望将其转换为虚拟变量0-1的矩阵,用于每个因子的所有可能级别.

然而,这个"虚拟"矩阵非常大(91690x16593)并且非常稀疏.我需要将它存储在稀疏矩阵中,否则它不适合我的12GB内存.

目前,我使用以下代码,它工作得很好,需要几秒钟:

library(Matrix)
X_factors <- data.frame(lapply(my_matrix, as.factor))
#encode factor data in a sparse matrix
X <- sparse.model.matrix(~.-1, data = X_factors)
Run Code Online (Sandbox Code Playgroud)

但是,我想在R中使用e1071包,并最终将此矩阵保存为libsvm格式write.matrix.csr(),因此首先我需要将稀疏矩阵转换为SparseM格式.

我试着这样做:

library(SparseM)  
X2 <- as.matrix.csr(X)
Run Code Online (Sandbox Code Playgroud)

但它很快填满我的RAM,最终R崩溃.我怀疑在内部,as.matrix.csr首先将稀疏矩阵转换为不适合我的计算机内存的密集矩阵.

我的另一种选择是直接以SparseM格式创建稀疏矩阵.
我试过,as.matrix.csr(X_factors)但它不接受数据框架的因素.

sparse.model.matrix(~.-1, data = X_factors)在SparseM包中是否有等价物?我在文档中搜索但我没有找到.

r sparse-matrix

14
推荐指数
1
解决办法
1万
查看次数

如何使用单个值删除数据框列

假设我在R中有以下数据框:

df1 <- data.frame(Item_Name = c("test1","test2","test3"), D_1=c(1,0,1),
                  D_2=c(1,1,1), D_3=c(11,3,1))
Run Code Online (Sandbox Code Playgroud)

我想创建一个删除没有方差的列的函数(例如,在这种情况下,它会删除列,D_2因为它只有1个值)

我知道我可以手工检查,但实际上我的数据非常大,我想自动化它.任何的想法?

r dataframe

10
推荐指数
3
解决办法
6013
查看次数

标签 统计

r ×3

dataframe ×2

sparse-matrix ×1