for-loop - 如何减少R中循环的执行时间?
问题描述
我有一个具有以下结构的大型数据集(1800 万行):
公司产品
1个
2个
3个
4个
2乙
4乙
1℃
3℃
2 天
3D
4 天
它实际上告诉了哪个公司生产什么。我想做以下事情:假设技术上接近的产品是在同一家公司内共同生产的(例如,产品 A 和 D 在 75% 的情况下是共同生产的),我想计算技术接近度矩阵. 我使用下面的代码来执行此操作,但执行它需要几天(实际上大约是两周)。
如果我应用 dcast() 而不是 for 循环,我会收到以下错误:“split_indices(.group, .n) :n must be a positive integer” 下面是代码:
文件名 = paste0('firm_bvd_product_all_location.csv')
micro_data = read.csv(文件名,sep = '|')
x_1 = micro_data[,c(1,3)]
x_2 = x_1[!is.na(x_1$product), ]
测试 = 唯一(x_2$product)
y_3 = NULL
y_4 = 空
对于(我在测试中)
{
y_1 = 子集(x_2,产品==i)
对于(测试中的 j)
{
y_2 = subset(x_2, product==j)
y_3[[j]] = nrow(merge(y_1,y_2,by = "firm", all=FALSE))/max(nrow(y_1),nrow(y_2))
}
y_4[[i]] = unlist(y_3)
}
x_3 = 矩阵(unlist(y_4),nrow=length(test),ncol=length(test))
行名(x_3)=排序(测试)
列名(x_3)=排序(测试)
将非常感谢任何有助于减少执行时间的想法。
解决方案
推荐阅读
- python - kivy 错误:* 未能添加服务 - 已在使用中?在树莓派中
- python - Python - 使用等待函数 Asyncio 的返回变量
- excel - 如何在查找表 EXCEL 中获取特定字母和数字组合(例如 M9)的最大值
- ionic-framework - 离子,--offset-top 问题
- python - 为什么以下用于将扁平字典转换为嵌套字典的代码有效?
- r - 我怎样才能让每个数字都在雷达图的一侧?
- r - 将范围函数的输出与R中的字符串连接并打印
- php - 如何向多对多数据透视表添加额外的列
- node.js - 我是使用 node.js 制作不和谐机器人的新手,我遇到了错误,它说第 14 行和第 18 行中没有定义消息
- django - Django 命令 - django-admin 命令不起作用