- 已编辑
比方说我有下面这个企业合作数据,每行代表一次企业研发合作,包含两列,第一列year是合作的年份,第二列c1是合作的企业(简化成了字母,中间用分号隔开),每次研发合作的企业数量不同,2个、3个、4个都有。
year c1
2019 a;b
2019 c;d;e
2019 f;g
2020 h;i;j;k
2020 l;m
现在要单独生成参与合作的企业和对应的年份,就是生成下面这张表。
c1 year
a 2019
b 2019
c 2019
d 2019
e 2019
f 2019
g 2019
h 2020
i 2020
j 2020
k 2020
l 2020
m 2020
我现在用下面的循环做的,速度有点慢,想知道能不能用apply或者其他方式优化呢?
x <- data.frame(year=c(2019,2019,2019,2020,2020),c1=c('a;b','c;d;e','f;g','h;i;j;k','l;m')) #数据
x3 <- data.frame()
for(i in 1:dim(x)[1]){
c1 <- as.vector(unlist(str_split(x[i,2],';'))) #将c1列数据按照分号拆开
x2 <- data.frame(c1 = c1, year = x[i,1])
x3 <- rbind(x3,x2)
print(i)
}