gpt4 book ai didi

r - 使用大型数据集在 R 中创建二元矩阵

转载 作者:行者123 更新时间:2023-12-02 04:08:12 26 4
gpt4 key购买 nike

我正在 Linux 机器上使用 R 版本 3.2.3。

我有一个数据集,其中包含 145 个变量的 1,374,439 个观测值。我需要将此数据帧转换为二进制矩阵。

我查看了不同的论坛,找到了包含 reshape2 包以及函数 melt()dcast() 的解决方案。这与小数据集完美配合(我总是首先在小部件上尝试我的代码,以检查它是否正在执行我想要的操作)。当我想在整个数据集上使用此代码时,它不再起作用。

我查看了其他论坛,并尝试过(没有成功)以下功能:

  • 表()
  • sparseMatrix()as.Matrix()
  • xtabs()

我还发现可以使用 dplyr 和 tidyr 包来处理更大的数据集。但我没有成功。老实说,我也很难理解。但看来我的数据集的大小是主要问题......

数据看起来像这样(这是一个简短的版本):

    Code_1  Code_2  Code_3  Code_4  Code_5  Code_6  Code_7
1 M201 M2187 M670
2 O682 O097 Z370 O48 O759
3 S7211 Z966 Z501

我想要这个(二进制矩阵):

    M201    M2187   M670   O682   O097  Z370    O48   0759    S7211  Z966    Z501
1 1 1 1 0 0 0 0 0 0 0 0
2 0 0 0 1 1 1 1 1 0 0 0
3 0 0 0 0 0 0 0 0 1 1 1

我还想准确地说,空格不是 NA。确实是空白。

最佳答案

你真正需要的是Matrix::sparse.model.matrix()函数。下面的答案创建了密集的矩阵,这将很快吃掉你在这个数据集上的所有内存。

这是一个简单的例子:

M = sparse.model.matrix( ~ ., data=data.frame(x = letters , y = LETTERS))

如果不需要拦截,请使用以下公式

M = sparse.model.matrix( ~ -1 + ., data=data.frame(x = letters , y = LETTERS))

关于r - 使用大型数据集在 R 中创建二元矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38309390/

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