我得到的数据框大约有100万个。和20个变量。变量包括级别和部件ID信息。 基本上它就像树结构数据帧。我想在“级别”(级别< 20)上为每个行创建路径。下面是一个示例,“Path”列是我想要创建的。 我目前使用嵌套的for循环使用if来创建路径。它处理每一行,所以我的笔记本电脑需要5到6个小时来获得一百万行的路径。关于如何让路径更有时间效率的任何想法?谢谢!
Level Part ID Path
1 11111 11111
2 22222 11111/22222
3 33333 11111/22222/33333
3 44444 11111/22222/44444
4 55555 11111/22222/44444/55555
2 66666 11111/66666
1 77777 77777
2 88888 77777/88888
答案 0 :(得分:0)
使用此测试数据
dd <- read.table(text="Level PartID Path
1 11111 11111
2 22222 11111/22222
3 33333 11111/22222/33333
3 44444 11111/22222/44444
4 55555 11111/22222/44444/55555
2 66666 11111/66666
1 77777 77777
2 88888 77777/88888", header=T)
使用单个循环可能是最有效的。例如
get_path <- function(level, part) {
path <- character(length(level))
current_parts <- c()
for(i in seq.int(length(path))) {
current_level <- level[i]
current_parts[current_level] <- part[i]
path[i] <- paste(current_parts[1:current_level], collapse="/")
}
path
}
get_path(dd$Level, dd$PartID)