Using the output of strsplit
'x' is a matrix and not a dataframe. You should be doing
colnames(x) <- c("Date", "quarter")
x[,"Date"] <- as.Date(x[,"Date"])
It would help if you took a look at the structure you were using to
understand how to access. 'names' applied to a vector would give you
the output for 13000 more entries. Think about it.
On Tue, Jan 19, 2010 at 2:07 PM, James Rome <jamesrome at gmail.com> wrote:
This suggestion does not work. x seems to have twice the number of entries as spl.
x <- do.call(rbind, spl)
names(x) <- c('Date', 'quarter')
x$Date <- as.Date(x$Date)
Error in x$Date : $ operator is invalid for atomic vectors
x$quarter <- as.numeric(x$quarter)
Error in x$quarter : $ operator is invalid for atomic vectors
names(x)
? ?[1] "Date" ? ?"quarter" NA ? ? ? ?NA ? ? ? ?NA ? ? ? ?NA
NA
? ?[8] NA ? ? ? ?NA ? ? ? ?NA ? ? ? ?NA ? ? ? ?NA ? ? ? ?NA
NA
? [15] NA ? ? ? ?NA ? ? ? ?NA ? ? ? ?NA ? ? ? ?NA ? ? ? ?NA
NA
? [22] NA ? ? ? ?NA ? ? ? ?NA ? ? ? ?NA ? ? ? ?NA ? ? ? ?NA
NA
? [29] NA ? ? ? ?NA ? ? ? ?NA ? ? ? ?NA ? ? ? ?NA ? ? ? ?NA ? ? ? ?NA
# and on for 13000 entries!
Making it a data.frame dod not work either.
I also tried
qt=c(length(spl))
dt=c(length(spl))
###
for(j in 1:length(spl)) {
? dt[j]=spl[[j]][1]
? qt[j]=spl[[j]][2]
?}
qt=as.numeric(qt)
dt=as.POSIXlt(dt)
rate=as.vector(ar)
ratedata=data.frame(c(rate=rate,date=dt,quarter=qt))
###
but then ratedata was totally wrong.
Thanks,
Jim
On 1/18/10 4:59 PM, Dennis Murphy wrote:
Hi James:
To slurp your list into a matrix, run
x <- do.call(rbind, yourlistname)
Date <- as.Date(x[, 1])
quarter <- as.numeric(x[, 2])
You could also convert x to a data frame with as.data.frame(x) :
x <- as.data.frame(x)
names(x) <- c('Date', 'quarter')
x$Date <- as.Date(x$Date)
x$quarter <- as.numeric(x$quarter)
do.call() takes a function as its first argument and a list as its
second argument.
HTH,
Dennis
On Mon, Jan 18, 2010 at 1:48 PM, James Rome <jamesrome at gmail.com
<mailto:jamesrome at gmail.com>> wrote:
? ? I successfully combined my data frames, and am now on my next hurdle.
? ? I had combined the data and quarter, and used tapply to count the
? ? entries for each unique date/quarter pair.
? ? ar= tapply(ewrgnd$gw, list(ewrgnd$dq), sum) ? #for each date/quarter
? ? combination sums the gw (which are all 1)
? ? dq=row.names(ar)
? ? spl=strsplit(dq)
? ? But I need to split them back into the separate date and quarter. So I
? ? used strsplit(), and get
? ? > spl
? ? [[1]]
? ? [1] "2009-01-01" "60"
? ? [[2]]
? ? [1] "2009-01-01" "61"
? ? [[3]]
? ? [1] "2009-01-01" "62"
? ? [[4]]
? ? [1] "2009-01-01" "63"
? ? [[5]]
? ? [1] "2009-01-01" "68"
? ? . . .
? ? But lists throw me. I want to get separate vectors of the date and
? ? quarter out of my list. All the things I have seen extract rows
? ? from the
? ? list. I need to extract columns.
? ? Thanks list,
? ? Jim Rome
? ? ______________________________________________
? ? R-help at r-project.org <mailto: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.
? ? ? ?[[alternative HTML version deleted]]
______________________________________________ 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 Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?