2017-07-18 6 views
2

元のファイル名の一部を使用して、操作されたデータフレームからCSVを書き込むことを望みます。アンダースコアの前にすべてを抽出したいのですが、なので、この場合は96だけです。それ以外は何もありません。ファイルには3つの数字が含まれているものもあれば、2つのファイルもありますが、すべてがアンダースコアの前です。元のファイル名の一部を使用してRでファイルをエクスポート

file <- "96_2016-01-01~2016-08-08.xlsx" 
x <- read.table(file, as.is=T) 

#extracting csv using full file name, but want to just use 96 
write.csv <- (x$All, paste(file,".csv"), row.names=FALSE) 

現在のファイル名:〜2016-08-08.xlsx.csv 96_2016-01-01に

目的のファイル名:96.csv

にはいくつかの方法があります正規表現またはgsubを使用しますか?ありがとうございました。

答えて

3

我々は他の文字(.*)に続いて_と一致するようにsubを使用して、我々はより具体的にする必要がある場合.csv

sub("_.*", ".csv", file) 
#[1] "96.csv" 

に置き換えることができ、マッチ一つ以上の数字(\\d+)文字列の先頭(^)には、グループ((...))に続いて_などの文字(.*)が取り込まれ、キャプチャされたものの逆参照(\\1)に置き換えられます。グループの後に.csv

sub("^(\\d+)_.*", "\\1.csv", file) 
#[1] "96.csv" 
+1

が続きます。それは速かったし、まさに私が望んでいたことです。スタックオーバーフローができたら、答えを受け入れるだろう! – kslayerr

+0

フルコード= write.csv(x $ All、paste( "_。*"、 ".csv"、file))、row.names = F) – kslayerr

関連する問題