使用read.csv加载CSV时出现额外X列的原因咨询
为什么用read.csv加载CSV时会多出一列名为X的行号列?
嘿,这个问题我太熟了!经常在处理CSV的时候碰到,原因其实很简单,咱们一步步拆解:
核心原因:你的CSV文件带了行索引
这大概率是因为你之前用R保存这个CSV的时候,默认把数据框的行号(行索引)也写进去了。比如用write.csv()函数时,它的默认参数是row.names=TRUE——这个参数会把R数据框左侧的连续行号作为单独一列写入CSV,但这一列是没有列名的。
举个例子,你提供的示例数据实际的CSV结构应该是这样的:
,Day,Who
1,Tue,Bob
2,Wed,Dan
3,Thur,Joe
你看,第一行的第一个位置是空的(没有列名),当read.csv()加载这个文件时,发现第一列没有列名,就会自动给它分配一个默认名称X,而列里的内容就是之前写入的行号。
怎么解决?
有两种思路,要么加载时处理,要么从根源避免:
- 加载时直接处理:用
read.csv("你的文件名.csv", row.names=1),这个参数会把第一列识别为行索引,不会把它作为数据列保留在数据框里。 - 从根源避免生成这个列:下次用R保存CSV时,加上
row.names=FALSE参数,比如write.csv(你的数据框, "新文件名.csv", row.names=FALSE),这样就不会把行索引写入CSV了,后续加载自然不会出现X列。 - 如果已经加载完了,临时删除也很简单:
你的数据框$X <- NULL
内容的提问来源于stack exchange,提问作者PaulBeales
相关产品推荐
相关产品推荐

