2017-08-11 16 views
0

同じ名前のRの2つのディレクトリにあるcsvファイルに参加しようとしました。 たとえば、1.csvと2.csvは/ path/directory1と/ path/directory2にあります。 私は2つのファイル(1.csvと1.csv)を結合しました。以下のコードに示すように:CSVの名前を列名に基づいて変更

directories <- c("/path/directory1", "/path/directory2") 
files <- lapply(directories, list.files, pattern="*.csv", full.names = TRUE) 
files <- lapply(files, sort) 
joined <- Map(function(x,y) { join(read.csv(x), read.csv(y), by=c("date")) }, 
      files[[1]], files[[2]]) 

ここで、「joined」にはcsvのリストが含まれています。今度はすべてのcsvの をディレクトリに保存したいのですが(例: "path/directory3")、csv名はカラム に基づいている必要があります。たとえば、 すべてのcsvには各国に関する情報が含まれています。 「国」列があります。値はオーストラリア、ニュージーランド、インド、米国です。

ので、CSV名がAustralia.csv、新Zealand.csvなどでなければなりません。

助けてください! ありがとうございました! 、明らかに

lapply(joined, function(x) write.csv(x, file = paste0(x[["country"]][1], ".csv"))) 

あなたは必要に応じてwrite.csvのために興味を持っている、関連する引数を追加します。

+0

'awk '(print $ 0 >> $ 1.tsv)'、[docs here](https://www.gnu.org/software/)のようなUNIXベースのソリューションを使う方がよいでしょう。 gawk/manual/html_node/Redirection.html)。 – liborm

+0

はい、正しいですが、Rでこれを行いたいです。 – Kaushik

答えて

0

あなたのような何かを試すことができます。

ファイル名を取得するには、「国」列(x[["country"]])だけを選択してから、その列の最初の値([1])を選択します。

+0

ありがとう!!!データフレームのリストから同じ列を削除したい場合は、もう1つのクエリを使用します。そしてそれをcsvのものに書いてください。これも教えていただけますか? – Kaushik

+0

@Kaushik、それらはすべて同じ名前ですか?もしそうなら、 'write.csv(x、...)'の代わりに、あなたは[この答えで](https://stackoverflow.com/questions/4605206/drop-data-frame-columns -by-name)をcsvファイルに書き込む前にサブセット 'x'にコピーします。 – A5C1D2H2I1M1N2O1R2T1

+0

ありがとうございました!!!! – Kaushik

関連する問題