微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何减少 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 举报,一经查实,本站将立刻删除。