2017-04-21 17 views
1

2つのcsvファイルの特定の列を結合し、そのファイル名を列ヘッダーとして使用したいとします。この例では、各ファイルの3番目の列を単一のデータフレーム。 csvファイルの行数と列数は同じです。csvファイルから特定の列をマージし、ヘッダーとしてファイル名を使用

サンプルデータセット:

File1.csv

V1,V2,V3,V4 
1,1986,64,61 

File2.csv

V1,V2,V3,V4 
1,1990,100,61 

期待される結果:

"File1","File2" 
64,100 

ここに私のスクリプトです:

my.file.list <- list.files(pattern = "*.csv") 
my.list <- lapply(X = my.file.list, FUN = function(x) { 
     read.csv(x, header=TRUE,colClasses = c("NULL", "NULL", "numeric", "NULL"), sep = ",")[,1] 
    }) 
my.df <- do.call("cbind", my.list) 

ファイル名に基づいて列見出しを追加するにはどうすればよいですか?

私はこの試みた:

sub('.csv','',basename(my.file.list),fixed=TRUE) 

を、私は、ヘッダーとしてこれを追加する方法を知りません。

私は何か助けていただきありがとうございます。

+0

予想される出力を表示してください。 'ファイル名を列見出しとして使用する 'とはどういう意味ですか? –

+0

コメントありがとうございます。私は私の質問を編集しました。 – Lyndz

+0

2つのファイルで何が起こるのが同じ数の行を持たないのですか? –

答えて

1
my.file.list <- list.files(pattern = "*.csv") 
my.list <- list() 
for (i in 1:length(my.file.list)) { 
    df <- read.csv(my.file.list[[i]], header=TRUE, sep=",")["V3"] 
    names(df) <- paste0("FILE", i) 
    my.list[[i]] <- df 
} 
my.df <- do.call("cbind", my.list) 
+0

Sorry.The列名は "File1"、 "File2"である必要があります – Lyndz

+0

ありがとうございます。私は今考えを得た! – Lyndz

0

@Tim Biegeleisen多くのご協力ありがとうございます。私は今考えを得た。ここでは、異なるファイル名のファイルに使用できる、改善された回答のバージョンを示します。

my.file.list <- list.files(pattern = "*.csv") 
my.list <- list() 
for (i in 1:length(my.file.list)) { 
    df <- read.csv(my.file.list[[i]], header=TRUE, sep=",")["V3"] 
    names(df) <-paste0(sub('.csv','',basename(my.file.list[i]),fixed=TRUE), i) 
my.list[[i]] <- df 
} 
my.df <- do.call("cbind", my.list) 
関連する問題