如何重构R数据框:提取指定区间数据并转为宽格式?
提取R数据框日志块并转为宽格式的实现
有一个结构特殊的R数据框dat,它包含Header段,以及多段以LogFrameStart起始、LogFrameEnd结束的日志数据块。需求是提取每段LogFrameStart与LogFrameEnd之间的数据,将其重新组织为宽格式的新数据框。
用户实现的循环代码
c=1 for (row in 1:nrow(df)){ if (df[row,'1']=='LogFrameStart'){ sample_data = df[(row+1):(row+29),] if (c==1){ newdata = sample_data c=c+1 } else { newdata = cbind(newdata,sample_data[,2])} } }
原数据框定义(精简版)
dat <- data.frame(matrix(NA, nrow = 105, ncol = 2)) colnames(dat) <- c("1","2") dat[,1] <- c("HeaderStart","LevelName",...,"LogFrameEnd")
dat[,2] <- c("HeaderStart","Session",...,"LogFrameEnd")
代码逻辑说明
这段代码的核心思路是:
- 初始化计数器
c,遍历原数据框的每一行 - 当匹配到
LogFrameStart标识时,提取该行后29行作为单块日志数据 - 首次提取时直接将该块数据赋值给新数据框
newdata,后续每次提取则将单块数据的第二列绑定到newdata中,逐步构建出宽格式的数据框
内容的提问来源于stack exchange,提问作者jc2525
相关产品推荐
相关产品推荐

