R语言如何整理包含独立日期行与对应数据行的dataframe
实现方法
核心逻辑为:先识别出两列值相等的日期行,提取日期值后向下填充到后续所属的时间、人员行,最后过滤掉原始日期行即可。
tidyverse方案
library(tidyverse) # 处理数据 df_res <- df %>% # 提取日期行的日期值,非日期行留空 mutate(date = if_else(a == b, a, NA_character_)) %>% # 向下填充空白的日期值 fill(date, .direction = "down") %>% # 过滤掉原始的日期行 filter(a != b) %>% # 调整列顺序并重命名(按需选择) select(date, time = a, name = b)
运行后得到的df_res即为目标结构,若需要输出为空格分隔的文本,可补充调用:
write.table(df_res, sep = "\t", row.names = F, col.names = F, quote = F)
base R方案
# 识别日期行 is_date <- df$a == df$b # 给每行绑定所属的日期分组 group <- cumsum(is_date) # 提取对应日期 dates <- df$a[is_date][group] # 组合新数据框 df_res <- cbind( date = dates[!is_date], df[!is_date, ] ) # 可选重命名列 colnames(df_res) <- c("date", "time", "name")
内容的提问来源于stack exchange,提问作者Jeremy K.
相关产品推荐
相关产品推荐

