私はquestion about this a few months backと尋ねましたが、私の答えは私の問題を解決したと思っていましたが、問題が再発して解決策がうまくいきませんでした。X. Rデータフレームのカラム名
私は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
コマンドを実行すると、私はこの取得:
length(orders$OrderID)
[1] 0
OrderDateでlength
を実行すると、c orrectly:
length(orders$OrderDate)
[1] 3331575
これはCSV
のhead
のコピー/ペーストです。今
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"
を使用して列の名前を変更できますが、正しく読み込まれない理由を知りたいことがあります。
次のアウトプットをカットアンドペーストできますか'head(orders)'と 'head(orders2)'のどちらか? –
私は実際の生のcsvファイルを見るのがより興味があります。どこかに投稿してリンクを張ってダウンロードして、この動作を再現することができますか?問題が何であれ、私の推測はファイルの正確な構造と内容の答えです。 – joran
私は注文のstrを取得していないが、その後、 'length(orders $ OrderID)[1] 0' –