Hello, I have a file that looks like this: Date,Hour,DA_DMD,DMD,DA_RTP,RTP,, 1/1/2006,1,3393.9,3412,76.65,105.04,, 1/1/2006,2,3173.3,3202,69.20,67.67,, 1/1/2006,3,3040.0,3051,69.20,77.67,, 1/1/2006,4,2998.2,2979,67.32,69.10,, 1/1/2006,5,3005.8,2958,65.20,68.34,, where the ',' is the separator and I tried to read it into R, but...> y <- read.csv("Data/Data_tmp.csv", header = FALSE, skip = 1,+ colClasses = c("character", "int", rep("double", 4)), + col.names = c("Date","Hour","DA_DMD","DMD","DA_RTP", "RTP"), + flush = TRUE) Error in read.table(file = file, header = header, sep = sep, quote = quote, : more columns than column names count.fields() gives me 8 fields per line, so I tried other variations, like the following, with two fictitious extra fields, but...> y <- read.csv("Data/Data_tmp.csv", header = FALSE, skip = 1,+ colClasses = c("character", "int", rep("double", 6)), + col.names = c("Date","Hour","DA_DMD","DMD","DA_RTP", + "RTP", "XXX", "YYY")) Error in methods::as(data[[i]], colClasses[i]) : no method or default for coercing "character" to "int" Could anybody please tell me what I am doing wrong and how I could read my data into R? Thanks in advance, Giovanni -- Giovanni Petris <GPetris at uark.edu> Associate Professor Department of Mathematical Sciences University of Arkansas - Fayetteville, AR 72701 Ph: (479) 575-6324, 575-8630 (fax) http://definetti.uark.edu/~gpetris/
On Wed, Mar 09, 2011 at 04:32:29PM -0600, Giovanni Petris wrote:> > Hello, > > I have a file that looks like this: > > Date,Hour,DA_DMD,DMD,DA_RTP,RTP,, > 1/1/2006,1,3393.9,3412,76.65,105.04,, > 1/1/2006,2,3173.3,3202,69.20,67.67,, > 1/1/2006,3,3040.0,3051,69.20,77.67,, > 1/1/2006,4,2998.2,2979,67.32,69.10,, > 1/1/2006,5,3005.8,2958,65.20,68.34,, > > where the ',' is the separator and I tried to read it into R, but... > > > y <- read.csv("Data/Data_tmp.csv", header = FALSE, skip = 1, > + colClasses = c("character", "int", rep("double", 4)), > + col.names = c("Date","Hour","DA_DMD","DMD","DA_RTP", "RTP"), > + flush = TRUE) > Error in read.table(file = file, header = header, sep = sep, quote = quote, : > more columns than column names > > count.fields() gives me 8 fields per line, so I tried other variations, > like the following, with two fictitious extra fields, but... >... > Error in methods::as(data[[i]], colClasses[i]) : > no method or default for coercing "character" to "int" > > Could anybody please tell me what I am doing wrong and how I could read > my data into R?I copied the data locally, then I read it using:> y <- read.csv("Data_tmp.csv", header = TRUE, colClasses = c("character", "integer", rep("double", 4), "NULL", "NULL"))which yields:> yDate Hour DA_DMD DMD DA_RTP RTP 1 1/1/2006 1 3393.9 3412 76.65 105.04 2 1/1/2006 2 3173.3 3202 69.20 67.67 3 1/1/2006 3 3040.0 3051 69.20 77.67 4 1/1/2006 4 2998.2 2979 67.32 69.10 5 1/1/2006 5 3005.8 2958 65.20 68.34>Is that what you had in mind? Issues I tried to address: * The class is "integer", not "int". * I used "NULL" class to refer to columns that are to be skipped. * I made use of the headers, rather than skipping them & re-coding their content in the read.csv() invocation. Peace, david -- David H. Wolfskill r at catwhisker.org Depriving a girl or boy of an opportunity for education is evil. See http://www.catwhisker.org/~david/publickey.gpg for my public key. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 196 bytes Desc: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20110309/255c2c2c/attachment.bin>
Easiest is to use 'header = TRUE' and use the data from the file as the header (remove the skip=1). Let the system determine what it should be and then you can change it later. On Wed, Mar 9, 2011 at 5:32 PM, Giovanni Petris <gpetris at uark.edu> wrote:> > Hello, > > I have a file that looks like this: > > Date,Hour,DA_DMD,DMD,DA_RTP,RTP,, > 1/1/2006,1,3393.9,3412,76.65,105.04,, > 1/1/2006,2,3173.3,3202,69.20,67.67,, > 1/1/2006,3,3040.0,3051,69.20,77.67,, > 1/1/2006,4,2998.2,2979,67.32,69.10,, > 1/1/2006,5,3005.8,2958,65.20,68.34,, > > where the ',' is the separator and I tried to read it into R, but... > >> y <- read.csv("Data/Data_tmp.csv", header = FALSE, skip = 1, > + ? ? ? ? ? ? ? colClasses = c("character", "int", rep("double", 4)), > + ? ? ? ? ? ? ? col.names = c("Date","Hour","DA_DMD","DMD","DA_RTP", "RTP"), > + ? ? ? ? ? ? ? flush = TRUE) > Error in read.table(file = file, header = header, sep = sep, quote = quote, ?: > ?more columns than column names > > count.fields() gives me 8 fields per line, so I tried other variations, > like the following, with two fictitious extra fields, but... > >> y <- read.csv("Data/Data_tmp.csv", header = FALSE, skip = 1, > + ? ? ? ? ? ? ? colClasses = c("character", "int", rep("double", 6)), > + ? ? ? ? ? ? ? col.names = c("Date","Hour","DA_DMD","DMD","DA_RTP", > + ? ? ? ? ? ? ? "RTP", "XXX", "YYY")) > Error in methods::as(data[[i]], colClasses[i]) : > ?no method or default for coercing "character" to "int" > > Could anybody please tell me what I am doing wrong and how I could read > my data into R? > > Thanks in advance, > Giovanni > > > > > > > -- > > Giovanni Petris ?<GPetris at uark.edu> > Associate Professor > Department of Mathematical Sciences > University of Arkansas - Fayetteville, AR 72701 > Ph: (479) 575-6324, 575-8630 (fax) > http://definetti.uark.edu/~gpetris/ > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- Jim Holtman Data Munger Guru What is the problem that you are trying to solve?
On Wed, Mar 9, 2011 at 5:32 PM, Giovanni Petris <gpetris at uark.edu> wrote:> > Hello, > > I have a file that looks like this: > > Date,Hour,DA_DMD,DMD,DA_RTP,RTP,, > 1/1/2006,1,3393.9,3412,76.65,105.04,, > 1/1/2006,2,3173.3,3202,69.20,67.67,, > 1/1/2006,3,3040.0,3051,69.20,77.67,, > 1/1/2006,4,2998.2,2979,67.32,69.10,, > 1/1/2006,5,3005.8,2958,65.20,68.34,, > > where the ',' is the separator and I tried to read it into R, but... > >> y <- read.csv("Data/Data_tmp.csv", header = FALSE, skip = 1, > + ? ? ? ? ? ? ? colClasses = c("character", "int", rep("double", 4)), > + ? ? ? ? ? ? ? col.names = c("Date","Hour","DA_DMD","DMD","DA_RTP", "RTP"), > + ? ? ? ? ? ? ? flush = TRUE) > Error in read.table(file = file, header = header, sep = sep, quote = quote, ?: > ?more columns than column names > > count.fields() gives me 8 fields per line, so I tried other variations, > like the following, with two fictitious extra fields, but... > >> y <- read.csv("Data/Data_tmp.csv", header = FALSE, skip = 1, > + ? ? ? ? ? ? ? colClasses = c("character", "int", rep("double", 6)), > + ? ? ? ? ? ? ? col.names = c("Date","Hour","DA_DMD","DMD","DA_RTP", > + ? ? ? ? ? ? ? "RTP", "XXX", "YYY")) > Error in methods::as(data[[i]], colClasses[i]) : > ?no method or default for coercing "character" to "int" > > Could anybody please tell me what I am doing wrong and how I could read > my data into R? >This works for me: Lines <- "Date,Hour,DA_DMD,DMD,DA_RTP,RTP,, 1/1/2006,1,3393.9,3412,76.65,105.04,, 1/1/2006,2,3173.3,3202,69.20,67.67,, 1/1/2006,3,3040.0,3051,69.20,77.67,, 1/1/2006,4,2998.2,2979,67.32,69.10,, 1/1/2006,5,3005.8,2958,65.20,68.34,," read.csv(textConnection(Lines)) as does this: read.table(textConnection(Lines), skip = 1, sep = ",", col.names = c("Date","Hour","DA_DMD","DMD","DA_RTP", "RTP", "junk1", "junk2"), colClasses = c("character", "integer", rep("double", 6))) -- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com
Giovanni - If you change "int" (which has no meaning in R) to "integer" in your second example, it should work. - Phil Spector Statistical Computing Facility Department of Statistics UC Berkeley spector at stat.berkeley.edu On Wed, 9 Mar 2011, Giovanni Petris wrote:> > Hello, > > I have a file that looks like this: > > Date,Hour,DA_DMD,DMD,DA_RTP,RTP,, > 1/1/2006,1,3393.9,3412,76.65,105.04,, > 1/1/2006,2,3173.3,3202,69.20,67.67,, > 1/1/2006,3,3040.0,3051,69.20,77.67,, > 1/1/2006,4,2998.2,2979,67.32,69.10,, > 1/1/2006,5,3005.8,2958,65.20,68.34,, > > where the ',' is the separator and I tried to read it into R, but... > >> y <- read.csv("Data/Data_tmp.csv", header = FALSE, skip = 1, > + colClasses = c("character", "int", rep("double", 4)), > + col.names = c("Date","Hour","DA_DMD","DMD","DA_RTP", "RTP"), > + flush = TRUE) > Error in read.table(file = file, header = header, sep = sep, quote = quote, : > more columns than column names > > count.fields() gives me 8 fields per line, so I tried other variations, > like the following, with two fictitious extra fields, but... > >> y <- read.csv("Data/Data_tmp.csv", header = FALSE, skip = 1, > + colClasses = c("character", "int", rep("double", 6)), > + col.names = c("Date","Hour","DA_DMD","DMD","DA_RTP", > + "RTP", "XXX", "YYY")) > Error in methods::as(data[[i]], colClasses[i]) : > no method or default for coercing "character" to "int" > > Could anybody please tell me what I am doing wrong and how I could read > my data into R? > > Thanks in advance, > Giovanni > > > > > > > -- > > Giovanni Petris <GPetris at uark.edu> > Associate Professor > Department of Mathematical Sciences > University of Arkansas - Fayetteville, AR 72701 > Ph: (479) 575-6324, 575-8630 (fax) > http://definetti.uark.edu/~gpetris/ > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >
Reasonably Related Threads
- Aggregation across two variables in data.table
- GLMM and data manipulation (2nd try)
- Fetching a range of columns
- What is the universal (world wide) understanding behind degaussing harddisks?
- What is the universal (world wide) understanding behind degaussing harddisks?