約9列と9000行以上の大きな.csvファイルを1行ごとに別々の.txtファイルに分割し、最初の列の名前。r - 1つのcsvファイルを複数のtxtファイルに分割する
.csvファイルのための :
01001_r1 32.4327 -86.6190 0.65 0.20 0.15 1.33 5.47 8
01001_r2 32.4327 -86.6190 0.65 0.20 0.15 1.33 5.46 8
01001_r3 32.4327 -86.6190 0.80 0.15 0.05 1.33 5.23 10
01003_r1 30.4887 -87.6918 0.65 0.20 0.15 1.33 5.23 9
01003_r2 30.4887 -87.6918 0.80 0.15 0.05 1.33 5.25 9
01003_r3 30.4887 -87.6918 0.65 0.20 0.15 1.33 4.96 8
私は1行ごとに、6つのファイルで終わるでしょう。
出力ファイルの列は「タブ区切り」にする必要があり、ファイルに行または列名が含まれていてはなりません。出力ファイルなど
は次のようになります。
01001_r1 32.4327 -86.6190 0.65 0.20 0.15 1.33 5.47 8
これは私がこれまでのところ得ているところである:
#set 'working directory'
setwd('C:/Users/Data/soils_data/sitesoil_in')
#identify data frame from .csv file
sd <- read.csv('site_soil.csv', sep="\t", header=F, fill=F)
lapply(1:nrow(sd), function(i) write.csv(sd[i,],
file = paste0(sd[i,1], ".txt"),
row.names = F, header = F,
quote = F))
そして、これは私が各出力ファイルのために得るものです:
ファイル名:01001_r1
V1,V2,V3,V4,V5,V6,V7,V8,V9
01001_r1,32.4327,-86.619,0.65,0.2,0.15,1.33,5.47,8
列名を削除したり、列をタブで区切ったりすることはできません。 見出しを取り除くためにheader = F、またはcol.names = Fを試しましたが、sep = "\ t"で列を区切りますが、コマンドは認識されません。
私は助けていただきありがとうございます。 おかげで、すべての提案に続い E.
、これはトリックを行うだろうシンプルなコードです:
#set 'working directory'
setwd('C:/Users/Elena/Desktop/DayCent_muvp_MODEL/DayCent_SourceData/soils_data/sitesoil_in')
#identify data frame from .csv file
sd <- read.csv('site_soil.csv', sep="\t", header=F, fill=F)
lapply(1:nrow(sd),
function(i) write.table(sd[i,],
file = paste0(sd[i,1], ".txt",collapse = ""),
row.names = FALSE, col.names = FALSE,
sep = "\t"
))
はあなたの助けありがとうございました。 E.
check write.table - あなたのアプローチは、あなたの場合には望ましくない.csvとして再度保存します。これは、何千もの.txtファイルをディスクに散らすだけの便利な目的の背後にある意図を説明できますか? – Christian
クリスチャン、ありがとう、私はそれを試みましたが、write.csvの代わりにwrite.tableを使用すると私にエラーが発生します...これらは、モデル入力のファイルを生成する別のコードの入力ファイルです。後のコードでは、これらのファイルを情報を認識するための非常に特殊な形式にする必要があります。 – EBB
あなたはその時に与えられたエラーを調査したいと思うでしょう。 'write.csv'はdocs('?write.table')で記述されている 'write.table'のラッパーであり、柔軟性を持たないことを意図していません。私の経験では、 'write.table'を使い、' write.csv'を使うのではなく、必要な正しい引数を手動で指定して、あなたの必要とする引数があることを願っています。 – user5359531