[R] how to read this kind of csv in R?

vod vos vodvo@ @end|ng |rom zoho@com
Sun Oct 6 14:23:14 CEST 2019


The problem is aa, bb and cc all in a single csv file 
contains no blank line.
The single csv file like list output.

aa(cm)
 1, 2 , 3,
 bb(mm)
  1, 2, 3,
 4, 5, 6,
 7, 8, 9,
 cc(mm)
 3, 4, 5,
 7, 5, 9,
 6, 5, 8,



 ---- 在 星期日, 06 十月 2019 05:08:41 -0700 Duncan Murdoch <murdoch.duncan using gmail.com> 撰写 ----
 > On 06/10/2019 7:29 a.m., vod vos via R-help wrote:
 > > I got hundreds of csv files. The real formats in each csv file are as follows:
 > > 
 > > aa(cm)
 > > 1, 2 , 3,
 > > 
 > > bb(mm)
 > > 1, 2, 3,
 > > 4, 5, 6,
 > > 7, 8, 9,
 > > 
 > > cc(mm)
 > > 3, 4, 5,
 > > 7, 5, 9,
 > > 6, 5, 8,
 > > 
 > > How can I use read.table or read.csv to convert the csv files
 > > to a tidy data frame format as follow:
 > > 
 > > aa, bb, cc
 > > 1, 1, 3
 > > 1, 2, 4
 > > 1, 3, 5
 > > 2, 4, 7
 > > 2, 5, 5
 > > 2, 6, 9
 > > 3, 7, 6
 > > 3, 8, 5
 > > 3, 9, 8
 > > 
 > > many thanks.
 > 
 > You'll need more than those two functions to do the transformation you 
 > want.  To work out what you need, write out the process in detail in 
 > English (or another natural language), not in code.  For example:
 > 
 > 1.  Read aa from file 1.
 > 2.  Read bb from file 2.
 > 3.  Read cc from file 3.
 > 4.  Expand all vectors to the same length.
 > 5.  Combine them into a single dataframe.
 > 
 > Then work out each step separately.  I think you'll want to use 
 > something like scan("filename", skip = 1, sep = ",") in steps 1, 2, and 
 > 3, but this will add NA values at the end of each line because of the 
 > final comma, so you could do this:
 > 
 > aa <- scan("file1", skip = 1, sep = ",")
 > aa <- aa[!is.na(aa)]
 > 
 > and similarly for the others.
 > 
 > I don't know the rules for expanding that you'll need in your real data, 
 > but for your example step 4 could be
 > 
 >    aa <- rep(aa, each = 3)
 > 
 > Then step 5 could be
 > 
 >    result <- data.frame(aa, bb, cc)
 > 
 > Duncan Murdoch
 >



More information about the R-help mailing list