如何减少 R 中循环的执行时间?

问题描述

我有一个大型数据集(1800 万行),其结构如下:

坚定的产品

1A

2A

3A

4A

2B

4B

1 C

3C

二维

3D

4D

它实际上告诉了哪家公司生产什么。我想做以下事情:假设技术接近的产品在同一家公司内共同生产(例如,产品 A 和 D 在 75% 的情况下共同生产),我想计算技术接近矩阵. 我使用下面的代码来做到这一点,但它需要几天(实际上大约两周)才能执行。

如果我应用 dcast() 而不是 for 循环,我会收到以下错误: “split_indices(.group,.n) :n 必须是正整数” 代码如下:

filenames = paste0('firm_bvd_product_all_location.csv')

micro_data = read.csv(filenames,sep = '|')

x_1 = micro_data[,c(1,3)]

x_2 = x_1[!is.na(x_1$product),]

test = unique(x_2$product)

y_3 = NULL

y_4 = NULL

for (i in test)

{

y_1 = 子集(x_2,产品==i)

for (j in test)

{

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))

rownames(x_3) = sort(test)

colnames(x_3) = sort(test)

非常感谢任何有助于减少执行时间的想法。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)