2

私はこのcsvファイル(fm.file)を持っています:

Date,FM1,FM2
28/02/2011,14.571611,11.469457
01/03/2011,14.572203,11.457512
02/03/2011,14.574798,11.487183
03/03/2011,14.575558,11.487802
04/03/2011,14.576863,11.490246

等々。

次のコマンドを実行します。

fm.data <- as.xts(read.zoo(file=fm.file,format='%d/%m/%Y',tz='',header=TRUE,sep=','))
is.character(fm.data)

そして、私は次のようになります:

[1] TRUE

How do I get the fm.data to be numeric without loosing its date index. I want to perform some statistics operations that require the data to be numeric.

4

3 に答える 3

1

問題は、csv ファイルに汚れたデータがあることだと思います。つまり、FM1 または FM2 列には、数値列として解釈されないようにする文字がどこかに含まれています。その場合、XTS (下のマトリックス) はすべてを強制的に文字型にします。

R を使用して疑わしいデータを見つける方法の 1 つを次に示します。

s <- scan(fm.file,what="character")
# s is now a vector of character strings, one entry per line
s <- s[-1]  #Chop off the header row
all(grepl('^[-0-9,.]*$',s,perl=T)) #True means all your data is clean
s[ !grepl('^[-0-9,.]*$',s,perl=T) ]
which( !grepl('^[-0-9,.]*$',s,perl=T) ) + 1

最後から 2 番目の行は、予期しない文字を含むすべての csv 行を出力します。最後の行は、ファイル内のどの行であるかを示しています (ヘッダー行を削除したため +1)。

于 2012-09-28T01:11:40.907 に答える
0

単に使用してから、最初の列を使用してオブジェクトread.csvに変換しないのはなぜですかDateas.Date

> x <- read.csv(fm.file, header=T)
> x$Date <- as.Date(x$Date, format="%d/%m/%Y")
> x
        Date      FM1      FM2
1 2011-02-28 14.57161 11.46946
2 2011-03-01 14.57220 11.45751
3 2011-03-02 14.57480 11.48718
4 2011-03-03 14.57556 11.48780
5 2011-03-04 14.57686 11.49025
于 2012-09-27T12:45:43.370 に答える