使用read.csv读取UCI学生数据集时遇列数不匹配及整行合并问题
解决UCI学生辍学预测数据集导入报错问题
问题原因
你遇到的报错和表头合并问题,根源是CSV文件的第一行存在格式错误:
"Daytime/evening attendance"字段后带有制表符(\t),且字段被不规范的双引号包裹,导致
read.csv的分号分隔逻辑混乱——系统误判列数,要么报"列数多于列名",要么把整行当成单个单元格。
解决方案
方案1:手动修正CSV文件表头
打开data.csv,找到第一行的"Daytime/evening attendance "部分,删除其中的制表符,确保字段名格式统一。修正后的表头应为:
Marital status;Application mode;Application order;Course;Daytime/evening attendance;Previous qualification;Previous qualification (grade);Nacionality;Mother's qualification;Father's qualification;Mother's occupation;Father's occupation;Admission grade;Displaced;Educational special needs;Debtor;Tuition fees up to date;Gender;Scholarship holder;Age at enrollment;International;Curricular units 1st sem (credited);Curricular units 1st sem (enrolled);Curricular units 1st sem (evaluations);Curricular units 1st sem (approved);Curricular units 1st sem (grade);Curricular units 1st sem (without evaluations);Curricular units 2nd sem (credited);Curricular units 2nd sem (enrolled);Curricular units 2nd sem (evaluations);Curricular units 2nd sem (approved);Curricular units 2nd sem (grade);Curricular units 2nd sem (without evaluations);Unemployment rate;Inflation rate;GDP;Target
修正后用原代码即可正常导入:
df.raw <- read.csv("data.csv", sep = ";", header = TRUE)
方案2:用read_delim自动处理格式问题(无需手动改文件)
安装并加载tidyverse包,用更灵活的read_delim函数处理不规范的CSV格式:
install.packages("tidyverse") library(tidyverse) df.raw <- read_delim( "data.csv", delim = ";", quote = "\"", escape_double = FALSE, trim_ws = TRUE )
该函数会自动识别表头,处理字段内的引号和多余空白字符,避免分隔逻辑错误。
字段名中文对照表
- Marital status:婚姻状况
- Application mode:申请方式
- Application order:申请顺序
- Course:课程
- Daytime/evening attendance:日间/夜间就读
- Previous qualification:前置学历
- Previous qualification (grade):前置学历成绩
- Nacionality:国籍
- Mother's qualification:母亲学历
- Father's qualification:父亲学历
- Mother's occupation:母亲职业
- Father's occupation:父亲职业
- Admission grade:录取成绩
- Displaced:是否流离失所
- Educational special needs:是否有特殊教育需求
- Debtor:是否负债
- Tuition fees up to date:学费是否缴清
- Gender:性别
- Scholarship holder:是否持有奖学金
- Age at enrollment:入学年龄
- International:是否国际学生
- Curricular units 1st sem (credited):第一学期学分认定数
- Curricular units 1st sem (enrolled):第一学期选课数
- Curricular units 1st sem (evaluations):第一学期考核次数
- Curricular units 1st sem (approved):第一学期通过课程数
- Curricular units 1st sem (grade):第一学期平均成绩
- Curricular units 1st sem (without evaluations):第一学期未考核课程数
- Curricular units 2nd sem (credited):第二学期学分认定数
- Curricular units 2nd sem (enrolled):第二学期选课数
- Curricular units 2nd sem (evaluations):第二学期考核次数
- Curricular units 2nd sem (approved):第二学期通过课程数
- Curricular units 2nd sem (grade):第二学期平均成绩
- Curricular units 2nd sem (without evaluations):第二学期未考核课程数
- Unemployment rate:失业率
- Inflation rate:通货膨胀率
- GDP:国内生产总值
- Target:目标(辍学/学业成功)
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

