如何在R中导入包含堆叠子表的CSV文件?
用R tidyverse处理堆叠子表CSV的方案
直接上可运行的tidyverse代码,思路就是给每个子表标记对应的赛道名,再清理掉无用行:
library(tidyverse) # 导入CSV(替换成你的文件路径) race_data <- read_csv("your_file.csv") # 核心处理步骤 tidy_data <- race_data %>% # 从Header=1的行提取赛道名,其他行先设为NA mutate(Circuit = if_else(Header == 1, Car, NA_character_)) %>% # 将赛道名向下填充,覆盖同子表的所有数据行 fill(Circuit, .direction = "down") %>% # 过滤掉作为子表表头的行 filter(Header == 0) %>% # 调整列顺序到目标格式 select(Car, LapTime, Circuit) %>% # 转为tidyverse的tbl格式(read_csv默认已生成tbl,此步可选) as_tibble() # 查看最终结果 print(tidy_data)
关键步骤说明:
mutate(Circuit = ...):识别每个子表的表头行(Header=1),把该行Car列的赛道名提取到新的Circuit列,非表头行暂时填充NAfill(Circuit, .direction = "down"):将每个赛道名向下填充,直到遇到下一个子表的表头行,让同子表的所有数据行都带上对应的赛道标记filter(Header == 0):剔除所有作为子表表头的行,只保留真实的赛车圈速数据select(...):调整列的顺序,匹配你需要的输出格式
这套逻辑不需要预先知道子表数量和行数,能自动适配任意数量的堆叠子表。
内容的提问来源于stack exchange,提问作者stollenm
相关产品推荐
相关产品推荐

