如何在R中读取Excel至DataFrame并统计各文件读取行数用于验证
统计每个Excel文件读取的行数
嘿,我来帮你搞定这个行数验证的问题!你现在用lapply批量读取Excel文件,只需要在读取逻辑里加入行数统计,或者事后对已读取的数据计算就行,下面给你两种实用的方法:
方法一:读取时直接统计行数(推荐)
可以在你现有的匿名函数里,用nrow()计算每个读取后的DataFrame行数,同时把文件名和行数对应保存下来,这样读取和统计一步完成:
# 修改你的原代码,加入行数统计 dat_with_stats <- lapply(file.list, function(i){ print(paste("正在读取文件:", i)) # 读取Excel文件 x <- read_xlsx( i, sheet = NULL, range = cell_cols("A:AE"), col_names = TRUE, skip = 1, trim_ws = TRUE, guess_max = 1000 ) x$file <- i # 标记数据来源文件 # 统计当前文件的读取行数 read_row_count <- nrow(x) print(paste("文件", i, "读取到", read_row_count, "行数据")) # 返回一个包含数据和行数的列表,方便后续处理 list(data_frame = x, row_count = read_row_count) }) # 把所有文件的统计结果整理成一个清晰的DataFrame row_verification_df <- data.frame( filename = sapply(dat_with_stats, function(item) item$data_frame$file[1]), read_rows = sapply(dat_with_stats, function(item) item$row_count), stringsAsFactors = FALSE ) # 查看统计结果 print(row_verification_df)
方法二:对已读取的数据事后统计
如果你已经运行了原代码得到了dat列表(每个元素是一个DataFrame),可以直接用sapply批量计算每个DataFrame的行数:
# 假设dat是你已经读取好的列表 row_counts <- sapply(dat, nrow) # 转换成带文件名的DataFrame row_verification_df <- data.frame( filename = sapply(dat, function(df) df$file[1]), read_rows = row_counts, stringsAsFactors = FALSE ) print(row_verification_df)
小贴士:和Excel实际行数对应注意点
- 你设置了
skip=1,所以Excel里的实际有效数据行数应该是「Excel中数据的最后一行行号 - 1」(因为跳过了第一行表头)。 - 如果Excel里存在空白行,
read_xlsx会自动读取到最后一个非空行,这时候你看到的Excel行号可能比实际读取的行数多,注意检查数据范围哦。
内容的提问来源于stack exchange,提问作者Neha
相关产品推荐
相关产品推荐

