2017-09-16 11 views
0

これらを処理するために効率的に作業するかどうか質問したいと思います。複数のcsvファイルを読み込んで列を更新する

(1)データのロードを効率的

ファイル名が、私は環境の中でそれを割り当てたいものとは異なっていたので、私はこの72倍をしました。

P02 <- read.csv("P02_1.csv") 
P03 <- read.csv("P03_1.csv") 
P04 <- read.csv("P04_1.csv") 
P06 <- read.csv("P06_1.csv") 
P11 <- read.csv("P11_1.csv") 
P12 <- read.csv("P12_1.csv") 
P13 <- read.csv("P13_1.csv") 
P14 <- read.csv("P14_1.csv") 
P15 <- read.csv("P15_1.csv") 

...しかし、参加者のトンがあると思います...

(2)時刻の形式を変更するには、効率的

時刻の形式を変更し、私は同様のアプローチでこれを試してみました。

P02$Time <- as.POSIXct(P02$Time, format = "%Y-%m-%d %H:%M:%S")      
P03$Time <- as.POSIXct(P03$Time, format = "%Y-%m-%d %H:%M:%S")      
P04$Time <- as.POSIXct(P04$Time, format = "%Y-%m-%d %H:%M:%S")      
P06$Time <- as.POSIXct(P06$Time, format = "%Y-%m-%d %H:%M:%S")      
P11$Time <- as.POSIXct(P11$Time, format = "%Y-%m-%d %H:%M:%S")      
P12$Time <- as.POSIXct(P12$Time, format = "%Y-%m-%d %H:%M:%S")      
P13$Time <- as.POSIXct(P13$Time, format = "%Y-%m-%d %H:%M:%S")      
P14$Time <- as.POSIXct(P14$Time, format = "%Y-%m-%d %H:%M:%S")      
P15$Time <- as.POSIXct(P15$Time, format = "%Y-%m-%d %H:%M:%S") 

...再び、72回。

これらのすべてを効率的に行う方法はありますか? 「forループ」と「割り当て」機能を使用するのに心が抱いていましたが、方法はわかりませんでした。

+0

あなたは、そのディレクトリのすべてのCSVファイルを読み込むしたいですか? –

答えて

2

forループとassignの機能で実現できますが、より洗練されたソリューションは、データフレームをリストに格納することです。すべてのcsvファイルが同じディレクトリにあると仮定すると、入力ファイルを繰り返し処理し、読み取って変換し、結果をリストに保存できます。ここでは例です:

directory <- "/path/to/your/data" 
files <- list.files(directory) 
data_frames <- vector("list", length(files)) 
for (i in seq_along(files)) { 
    df <- read.csv(file.path(directory, files[i])) 
    df$Time <- as.POSIXct(df$Time, format = "%Y-%m-%d %H:%M:%S") 
    data_frames[[i]] <- df 
} 
2

あなたは自分の名前を取得するにはlist.filesを使用して、一度にそれらすべてを読むことができ、作業ディレクトリ内のすべてのCSVファイルで読みたい場合。これにより、データフレームのリストが作成されます。これは、ワークスペースの周りに72個のオブジェクトを配置するよりも優れています。

filenames <- list.files(pattern = "csv") 
P_list <- lapply(filenames, read.csv) 
names(P_list) <- sub("(^P[[:digit:]]{2}).*", "\\1", x) 

今、あなたは、もう一度、あなたがしたい変換を行うためにlapplyを使用することができます。

P_list <- lapply(P_list, function(x){ 
     x$Time <- as.POSIXct(x$Time, format = "%Y-%m-%d %H:%M:%S") 
     x 
}) 

(未テスト、本当のデータがないからです。)

+0

'list.files'に' path/to/files'を追加してください。 – CPak

+0

@CPak私はそれを考えましたが、OPはカレントディレクトリからの読み込みです。デフォルトは 'path ="です。 " OPのコードを考えると、これを変更する理由はありません。 –

+0

ok CPak

関連する問題