为何在R中加载CSV文件时小时数据列全部显示为NA?
解决方案
1. 调整导入参数规避解析错误
R导入Excel文件时默认会根据前100行数据猜测列类型,若小时列前100行存在解析失败的内容,就会被判定为lgl类型,所有内容转NA,可通过强制指定列类型解决:
- 若使用
readxl包导入:
直接指定小时列的导入类型为文本,避免提前解析read_excel("你的文件路径.xlsx", col_types = c(/* 其他列对应类型,比如"numeric"/"date"等 */, "text")) - 若使用
openxlsx包导入:
关闭自动日期检测,单独指定小时列为字符型导入read.xlsx("你的文件路径.xlsx", detectDates = F, colClasses = c(/* 其他列对应类型 */, "character"))
2. 导入后完成小时数据格式转换
成功将小时列以文本格式导入后,根据原始数据格式选择对应转换方案:
- 原始格式为
1:00类时分格式:
调用lubridate包的时分解析函数提取小时数值library(lubridate) df$小时列 <- hour(hm(df$小时列)) - 已在Excel修改为纯数字格式仍导入失败:
先清除列内隐藏的非打印字符、空格等特殊内容,再转数值型df$小时列 <- as.numeric(gsub("[^0-9]", "", df$小时列))
3. 大文件特殊处理方案
若全表调整导入参数效率过低,可单独在Excel中将小时列另存为单个CSV文件,指定字符型导入后再按行索引合并回原数据集,无需修改全表数据。
内容的提问来源于stack exchange,提问作者EJM1998
相关产品推荐
相关产品推荐

