在R中读取含缺失值的TXT表格并正确生成5列数据的求助
方案1:基础R原生方法(无需额外安装包,兼容性强)
逐行读取后用正则统一拆分,适配不规则空白分隔和列缺失场景,百万行数据处理性能足够:
# 读取所有原始行内容 raw_lines <- readLines("data.txt") # 按连续空白字符拆分每一行,长度不足5的自动补NA split_content <- strsplit(raw_lines, "\\s+") df <- as.data.frame(do.call(rbind, lapply(split_content, function(x) { length(x) <- 5 x })), stringsAsFactors = FALSE) # 自定义列名 colnames(df) <- c("A", "B", "C", "D", "E") # 可选:将第三行的占位符`.`统一替换为NA df[df == "."] <- NA # 后续可按需将D、E列转为数值型,A、B列转为时间格式
方案2:readr包读取(效率更高,适合百万级大数据)
readr内置对不规则空白分隔的适配逻辑,代码更简洁,读取速度比基础R函数快3~5倍:
# 未安装先执行:install.packages("readr") library(readr) df <- read_table( file = "data.txt", col_names = c("A", "B", "C", "D", "E"), na = c("", ".") # 直接将空值和占位符.识别为NA )
错误原因说明
你之前尝试的方法出错根源:
sep="\t"按制表符分隔,但你的数据是空格分隔,所以所有内容会被合并为1列- 直接用
read.table加fill=TRUE时,默认取所有行拆分的最大列数作为总列数,第三行.和3494之间的多个空格会被误判为多个分隔符,因此生成多余的NA列
内容的提问来源于stack exchange,提问作者Hawky
相关产品推荐
相关产品推荐

