gpt4 book ai didi

r - 在 R 中将大型长数据转换为宽数据

转载 作者:行者123 更新时间:2023-12-01 08:12:50 31 4
gpt4 key购买 nike

<分区>

我需要帮助将尺寸为 1558810 x 84 的长数据转换为尺寸为 1558810 x 4784 的宽数据

让我详细解释如何以及为什么。我的原始数据如下——数据具有三个主要列 -

id  empId   dept
1 a social
2 a Hist
3 a math
4 b comp
5 a social
6 b comp
7 c math
8 c Hist
9 b math
10 a comp

id 是唯一的键,它告诉哪位员工一天去了大学的哪个系。我需要将其转换如下。

id  empId   dept    social  Hist    math    comp
1 a social 1 0 0 0
2 a Hist 0 1 0 0
3 a math 0 0 1 0
4 b comp 0 0 0 1
5 a social 1 0 0 0
6 b comp 0 0 0 1
7 c math 0 0 1 0
8 c Hist 0 1 0 0
9 b math 0 0 1 0
10 a comp 0 0 0 1

我有两个数据集,一个有 49k 行,一个有 155 万行。对于具有 1100 个唯一部门值的较小数据集,我在 reshape2 包中使用 dcast 来获取所需的数据集(因此,转换后的数据将具有 3+1100 列和 49k 行)。但是,当我在具有 4700 个唯一部门值的较大数据集上使用相同的函数时,我的 R 由于内存问题而崩溃。我尝试了各种其他替代方法,如 xtabs、reshape 等,但每次都因内存错误而失败。

为此,我现在使用了一个粗略的 FOR 循环 -

columns <- unique(ds$dept)

for(i in 1:length(unique(ds$dept)))
{
ds[,columns[i]] <- ifelse(ds$dept==columns[i],1,0)
}

但这非常慢,代码现在已经运行了 10 个小时。有什么解决方法吗,我想念的是什么?

任何建议都会有很大帮助!

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