gpt4 book ai didi

r - 加快数据帧重排

转载 作者:行者123 更新时间:2023-12-04 09:46:06 26 4
gpt4 key购买 nike

我有一个带有坐标(“开始”,“结束”)和标签(“组”)的数据框:

a <- data.frame(start=1:4, end=3:6, group=c("A","B","C","D"))
a
start end group
1 1 3 A
2 2 4 B
3 3 5 C
4 4 6 D

我想创建一个新的数据框,其中将标签分配给坐标范围内序列的每个元素:

   V1 V2
1 1 A
2 2 A
3 3 A
4 2 B
5 3 B
6 4 B
7 3 C
8 4 C
9 5 C
10 4 D
11 5 D
12 6 D

下面的代码可以工作,但是在范围很广的情况下速度非常慢:

df<-data.frame()
for(i in 1:dim(a)[1]){
s<-seq(a[i,1],a[i,2])
df<-rbind(df,data.frame(s,rep(a[i,3],length(s))))
}
colnames(df)<-c("V1","V2")

我怎样才能加快速度?

最佳答案

你可以试试data.table

library(data.table)
setDT(a)[, start:end, by = group]

给出

    group V1
1: A 1
2: A 2
3: A 3
4: B 2
5: B 3
6: B 4
7: C 3
8: C 4
9: C 5
10: D 4
11: D 5
12: D 6

显然,这只有在每组一行的情况下才有效,这里看起来就是这样。

关于r - 加快数据帧重排,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33553656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com