相关疑难解决方法(0)

R中模型矩阵中因子的所有级别

我有一个data.frame数字和因子变量组成,如下所示.

testFrame <- data.frame(First=sample(1:10, 20, replace=T),
           Second=sample(1:20, 20, replace=T), Third=sample(1:10, 20, replace=T),
           Fourth=rep(c("Alice","Bob","Charlie","David"), 5),
           Fifth=rep(c("Edward","Frank","Georgia","Hank","Isaac"),4))
Run Code Online (Sandbox Code Playgroud)

我想构建一个matrix为该因子分配虚拟变量并单独保留数值变量.

model.matrix(~ First + Second + Third + Fourth + Fifth, data=testFrame)
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,在运行时会将lm每个因子的一个级别作为参考级别.但是,我想为matrix所有因素的每个级别构建一个带有虚拟/指示变量的变量.我正在建立这个矩阵,glmnet所以我不担心多重共线性.

有没有办法model.matrix为每个级别的因子创建假人?

model r matrix indicator

62
推荐指数
4
解决办法
5万
查看次数

如何基于大数据框计算共现矩阵?

我想根据这里推荐的代码创建一个共现矩阵(另见下文)。它适用于我使用的大多数数据帧。但是,如果我使用data.table::melt...

negative length vectors are not allowed

...或稍后使用 base::crossprod

error in crossprod: attempt to make a table with >=2^31 elements

两者都与数据帧的大小有关。在第一种情况下,它与行数有关,而在后一种情况下,矩阵的大小超过了限制。

我知道关于第一个问题(解决方案data.table::melt)提出的[2] [3][4] ,以及对于第二个问题(base::crossprod通过)[5][6] ,和我见过[ 7]但我不确定如何使它们适合我的情况。我试图按 ID 将数据帧拆分为几个数据帧,合并它们并计算共现矩阵,但我刚刚产生了额外的错误消息(例如,无法分配大小为 17.8 GB 的向量)。

可重现的例子

我有一个由plyr::join它创建的组装数据框,看起来像这样(但是,当然,要大得多):

df <- data.frame(ID = c(1,2,3,20000), 
                  C1 = c("England", "England", "England", "China"),
                  C2 = c("England", "China", "China", "England"),
                  C5850 = c("England", "China", "China", "England"),
                  SC1 = c("FOO", "BAR", "EAT", …
Run Code Online (Sandbox Code Playgroud)

r large-data plyr dataframe data.table

5
推荐指数
0
解决办法
186
查看次数

标签 统计

r ×2

data.table ×1

dataframe ×1

indicator ×1

large-data ×1

matrix ×1

model ×1

plyr ×1