几个月前我问了一个关于这个的问题,我认为答案已经解决了我的问题,但我又遇到了这个问题,解决方案对我不起作用。
我正在导入 CSV:
orders <- read.csv("<file_location>", sep=",", header=T, check.names = FALSE)
这是数据框的结构:
str(orders)
'data.frame': 3331575 obs. of 2 variables:
$ OrderID : num -2034590217 -2034590216 -2031892773 -2031892767 -2021008573 ...
$ OrderDate: Factor w/ 402 levels "2010-10-01","2010-10-04",..: 263 263 269 268 301 300 300 300 300 300 ...
如果我length
在第一列 OrderID 上运行命令,我会得到:
length(orders$OrderID)
[1] 0
如果我length
在 OrderDate 上运行,它会正确返回:
length(orders$OrderDate)
[1] 3331575
这是 的副本/head
粘贴CSV
。
OrderID,OrderDate
-2034590217,2011-10-14
-2034590216,2011-10-14
-2031892773,2011-10-24
-2031892767,2011-10-21
-2021008573,2011-12-08
-2021008572,2011-12-07
-2021008571,2011-12-07
-2021008570,2011-12-07
-2021008569,2011-12-07
现在,如果我重新运行read.csv
,但去掉check.names
选项,现在的第一列dataframe
在名称的开头有一个 X.。
orders2 <- read.csv("<file_location>", sep=",", header=T)
str(orders2)
'data.frame': 3331575 obs. of 2 variables:
$ X.OrderID: num -2034590217 -2034590216 -2031892773 -2031892767 -2021008573 ...
$ OrderDate: Factor w/ 402 levels "2010-10-01","2010-10-04",..: 263 263 269 268 301 300 300 300 300 300 ...
length(orders$X.OrderID)
[1] 3331575
这可以正常工作。
我的问题是为什么R
要在第一列名称的开头添加 X.?从 CSV 文件中可以看出,没有特殊字符。它应该是一个简单的负载。添加check.names
,虽然会从 CSV 导入名称,但会导致数据无法正确加载,我无法对其执行分析。
我能做些什么来解决这个问题?
旁注:我意识到这是一个小问题——我对我认为我加载正确但没有得到我预期的结果感到更加沮丧。我可以使用 重命名该列colnames(orders)[1] <- "OrderID"
,但仍然想知道它为什么不能正确加载。