2017-05-16 9 views
0

私はフォルダ(directory1)で作業していますが、まず別のフォルダ(directory2)にある.csvファイルを変更して使用する必要があります。ファイル名に基づいて列に値を挿入して別のディレクトリに保存する

最初に、ファイル名に基づいて列に値を挿入したいと思います。私はすべての科目のループでこれをやりたいと思います。 私は単一のファイルのためにそれを行う方法を知っていますが、ループの作成方法はわかりません。

#Choose directory with .csv files to read 
setwd("/Users/R/directory2") 
d = read.table("ppt01_EvF.csv", sep=",") 

#Change columns names 
colnames(d) <- c("Order","Condition","Press","Response","Time","Time2") 

#Read file name 
filenames <- "ppt01_EvF.csv" 

# Remove ".csv" 
filenames2 <- sub(".csv", "", filenames) 

# Split the string by "_" 
filenames_vec <- strsplit(filenames2, split = "_")[[1]] 

# Create new column to store the information 
d$PPT_N_NUMBER <- filenames_vec[1] 

第二に、私は、列名を持つ新しい大きなファイルの先頭にすべての参加者を含む一つの大きなファイルが、ちょうど1行としてすべての.csvファイルを保存したいと思います。

最後に、私はこの新しい大きなファイル(.csv)を私が作業しているフォルダ(directory1)に保存したいと思います.1つのファイルとは別のディレクトリに保存されています。

誰かがこれを行うための最善の方法を理解するのを手伝っていただければ幸いです。

答えて

0

それはこのようなものでなければなりません:

setwd("/Users/R/directory2") 
files <- list.files() 
library(data.table) 

data_list <- list() 

for(i in 1:length(files)){ 
    file_name <- files[i] 
    d = fread(file_name, sep=",") 

    #Change columns names 
    colnames(d) <- c("Order","Condition","Press","Response","Time","Time2") 

    # Split the string by "_" 
    filenames_vec <- strsplit(file_name, split = "_")[[1]] 

    # Create new column to store the information 
    d$PPT_N_NUMBER <- filenames_vec[1] 
    data_list[[i]] <- d 
} 
all_data <- rbindlist(data_list) 
fwrite(all_data, '../directory1/all_data.csv') 
+0

それは働きます!ありがとう!私は 'files < - list.files(pattern =" .csv ")'を修正する必要がありました。 – dede

関連する問題