-1

R でテーブルを読み込んで、データのログを取得しようとしています。これにより、最後の列に数値以外の値が含まれているというエラーが表示されます。

> log(TD_complete)
Error in Math.data.frame(list(X2011.01 = c(187072L, 140815L, 785077L,  : 
non-numeric variable in data frame: X2013.05

データは数値に「見えます」。つまり、それを読むと、私の脳はそれを数値として解釈します。以下がうまくいくので、私は完全に間違っていることはできません:

> write.table(TD_complete,"C:\\tmp\\rubbish.csv", sep = ",")
> newdata = read.csv("C:\\tmp\\rubbish.csv")
> log(newdata)

最後の行は喜んで数値を出力します。

これは私には意味がありません。最初に読み取ったときにデータが数値であるか、そうでないかのどちらかです。何が起こっているのでしょうか?

編集: 残念ながら、データを共有することはできません。機密情報です。

4

2 に答える 2

0

read.csv() の colClasses 引数を確認します。ここで、各列を読み取って格納するタイプを指定できます。多数の列がある場合、これはあまり役に立たないかもしれませんが、これを使用すると、使用しているデータの型を R が推測する必要がなくなります。

「最後の行が喜んで数字を出力する」からといって、Rが値を数値として扱っているわけではありません。

また、データの一部を確認するのにも役立ちます。

于 2013-09-04T16:08:06.977 に答える
0

実際のデータまたはそのサンプルを提供すると、ヘルプがはるかに簡単になります。

この場合、R は問題の列を文字列として保存し、括弧なしで CSV ファイルに書き込むと仮定します。そこに到達すると、それを再度読み取り、文字のない値を数値以外のものとして解釈することを気にしません。つまり、CSV ファイルを読み書きすることで、数値のみを含む文字列を適切な整数 (または浮動小数点数) に変換しました。

しかし、実際のデータや残りのコードがなければ、これは単なる推測です。

于 2013-09-04T16:03:05.993 に答える