2017-07-13 11 views
1

ヘッダーに日付を含むExcelスプレッドシートがあります。おそらくread.xlsx()関数を使用して、スプレッドシートをRにインポートしたいと思います。ただし、日付はExcelの内部値の文字列に変換され、前面に「X」が表示されます。私はDateクラスとして日付を保持するか、文字列をDateに変換したいと考えています。私は日付が少なくともフォーマットまたは指定された起源からの日数であったが、 "X"を持っていればas.Date()を使うことができると理解しています。ヘッダーの日付をExcelからRに変更

ありがとうございました。

例:

Excelスプレッドシート "実践"

Sample 09-Jul 10-Jul 11-Jul 
1 3 10 2 
2 5 0 
3 1 0 0 

その後、Rで:

practice<-read.xlsx("Practice.xlsx") 

Sample X42925 X42926 X42927 
1  1  3  10  2 
2  2  5  0  NA 
3  3  1  0  0 

practice2=gather(practice,Date,value,-Sample,na.rm=TRUE) 

Sample Date value 
1  1 X42925  3 
2  2 X42925  5 
3  3 X42925  1 
4  1 X42926 10 
5  2 X42926  0 
6  3 X42926  0 
7  1 X42927  2 
9  3 X42927  0 

practice2$Date=as.Date(practice2$Date) 

Error in charToDate(x) : 
    character string is not in a standard unambiguous format 

答えて

3

X42925はExcelのシリアル日付で、1900年1月1日より約42925日後の日付に対応しています。as.Dateを適切な起点としたこれらのシリアル日付をR日付に変換することができます。

Date列は、次のように変換する必要があります。これは、プレフィックスのあるXがテキストとして読み込まれたことを前提としています。

dates <- as.numeric(substr(practice2$Dates, 2, nchar(practice2$Dates))) 
practice2$Dates <- as.Date(dates, origin = '1899-12-30') 

Demo

私は私の全体のデータセットが頻繁に更新されるので、read.csvを使用しないように期待していた
+0

これは私の全データセットで完璧に機能しました、ありがとう! – Peptobizmol

1

代わり.CSVとしてExcelファイルを保存してください。それはあなたのデータと日付をプレーンテキストに変換します。プレーンテキストは問題なくRにインポートする必要があります。

また、ここのいずれかの方法を試してみてください。 http://www.milanor.net/blog/read-excel-files-from-r/

幸運を!

+0

と私は別々の.csvを保存しなくても、私はそれを実行できるようにコードを書きたいですにもかかわらず、それでも、ありがとう! – Peptobizmol

関連する問題