You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言删除onewireviewer导出CSV多余行并批量合并iButton温度数据

R语言批量处理OneWireViewer导出iButton温度CSV文件解决方案

报错原因说明

你遇到的报错是因为OneWireViewer导出的CSV前14行是单栏的设备元数据,默认读取时会被识别为仅1列,后续多列选择操作自然报错。

完整可运行代码

# 加载依赖包,未安装先运行 install.packages(c("tidyverse", "fs"))
library(tidyverse)
library(fs)

# 配置参数,*请替换为你自己的本地路径*
root_dir <- "./你存放所有点位文件夹的总目录路径"
output_path <- "./合并后的iButton温度数据.csv"

# 批量递归读取所有CSV,自动跳过前14行冗余内容
merged_data <- dir_ls(root_dir, recurse = TRUE, glob = "*.csv") %>% 
  map_dfr(
    .f = function(path) {
      # 读取单个CSV,跳过前14行,关闭列类型提示
      read_csv(path, skip = 14, show_col_types = FALSE) %>% 
        # 新增溯源列:点位名称(所属文件夹名)、原始文件名
        mutate(
          点位名称 = basename(dirname(path)),
          原始文件名 = basename(path)
        )
    },
    # 自动按列名对齐合并,列不一致时缺失值填NA
    .id = NULL
  )

# 导出合并结果
write_csv(merged_data, output_path, na = "")

# 输出合并后数据概览
glimpse(merged_data)

关键配置说明

  • skip = 14:直接从第15行(真实表头行)开始读取,从根源解决仅识别到1列的报错
  • recurse = TRUE:自动遍历总目录下所有子文件夹,无需手动逐个处理70个点位目录
  • 自动生成溯源列:保留每个数据行对应的点位和原始文件信息,避免后续数据核对时无法对应来源

异常排查

如果部分文件读取后列名错位,可单独测试单个文件的跳过行数:

# 替换为单个CSV的路径测试合适的skip值
test_data <- read_csv("单个测试文件路径.csv", skip = 14, show_col_types = FALSE)
head(test_data)

如果测试显示表头仍为元数据,可将skip值调整为13或15,直到表头为温度、时间等真实列名即可。


内容的提问来源于stack exchange,提问作者Sara VDL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 00:36:07