【发布时间】:2019-05-07 14:29:41
【问题描述】:
这是我想要实现的一个示例。我在 R 中使用 for 循环。但是,我想摆脱它,因为它在大数据上太慢了。当输出是更大的数据帧(例如,>1000 列和行)时,有什么更好的方法仍然可以快速运行?
df <- data.frame(id=c('a', 'a', 'b', 'c', 'c', 'c'), code=c(1,2,3,3,1,2), stringsAsFactors = F)
uid <- unique(df$id)
out <- NULL
df
id code
1 a 1
2 a 2
3 b 3
4 c 3
5 c 1
6 c 2
for (i in uid){
z <- t(df[df$id==i,])
colnames(z) <- z[2,]
z <- as.data.frame(z[2, , drop = FALSE])
out <- bind_rows(out, z)
}
out
1 2 3
1 1 2 <NA>
2 <NA> <NA> 3
3 1 2 3
【问题讨论】: