数か月前にこれについて質問したところ、答えで問題が解決したと思っていましたが、再び問題に遭遇し、解決策がうまくいきませんでした。
私は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
OrderDate で実行するlength
と、正しく返されます。
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"
が、正しく読み込まれない理由を知りたいです。