使用glatos::convert_glatos_to_att()转换格式时的数据丢失及Tag.ID为空问题咨询
解决glatos转VTrack att格式的两个问题:数据丢失与Tag.ID映射失败
一、排查数据丢失的核心原因
convert_glatos_to_att()默认会过滤掉没有匹配到Tag.Metadata的检测记录,这大概率是你数据从24万行缩水到560行的原因。可以通过以下步骤验证:
- 先统计原始glatos检测数据中
animal_id的唯一值数量:length(unique(your_glatos_data$animal_id)) - 对比转换后
Tag.Metadata的行数,如果远小于上述唯一值数量,说明大部分animal_id未被自动识别为有效标签元数据。
二、修复Tag.ID映射错误
VTrack的Tag.Metadata要求必须包含与检测数据匹配的Tag.ID,glatos的animal_id未正确映射,通常是因为格式不统一或自动识别逻辑不匹配。可以手动构建匹配的元数据:
# 从原始检测数据提取唯一animal_id,构建符合VTrack要求的Tag.Metadata custom_tag_meta <- your_glatos_data %>% distinct(animal_id) %>% rename(Tag.ID = animal_id) %>% # 补充VTrack必填字段(根据实际数据替换默认值) mutate( Species = "你的物种名称", Tag.Type = "Acoustic", Tag.Life = 5, # 标签寿命(单位:年) Tag.Deploy.Date = as.POSIXct(NA), Tag.Retrieval.Date = as.POSIXct(NA) ) # 用自定义元数据重新转换,强制保留所有检测记录 att_data <- convert_glatos_to_att( dets = your_glatos_data, tag_meta = custom_tag_meta, keep_all = TRUE )
三、确保所有检测数据完整保留
调用convert_glatos_to_att()时添加keep_all = TRUE参数,会跳过默认的无匹配记录过滤步骤,将所有原始检测数据纳入ATT对象的Detections部分,无匹配的记录Tag.ID会标记为NA,后续可再补全元数据。
四、额外检查项
- 确认原始数据的
detection_timestamp是POSIXct格式,VTrack对时间格式要求严格:your_glatos_data$detection_timestamp <- as.POSIXct(your_glatos_data$detection_timestamp) - 检查是否存在重复检测记录,重复项可能被自动去重:
sum(duplicated(your_glatos_data))
内容的提问来源于stack exchange,提问作者Sophia D'Aurora
相关产品推荐
相关产品推荐

