如何将ts转换为data.frame?

如何将ts转换为data.frame?,r,R,我想从ts as up获取data.frame,它有两个功能: 1.行名为123456 2.colnames是周一周二周三周四周五周六周日 我怎样才能得到它 > print( ts(as.character(seq(as.Date("2013-9-1"),length.out=30,by=1)), frequency = 7, start = c(1, 7)), calendar = TRUE) p1 p2 p3 p4

我想从ts as up获取data.frame,它有两个功能:
1.行名为123456
2.colnames是周一周二周三周四周五周六周日
我怎样才能得到它

> print( ts(as.character(seq(as.Date("2013-9-1"),length.out=30,by=1)), frequency = 7, start = c(1, 7)), calendar = TRUE) 
          p1         p2         p3         p4         p5         p6         p7
1                                                                   2013-09-01
2 2013-09-02 2013-09-03 2013-09-04 2013-09-05 2013-09-06 2013-09-07 2013-09-08
3 2013-09-09 2013-09-10 2013-09-11 2013-09-12 2013-09-13 2013-09-14 2013-09-15
4 2013-09-16 2013-09-17 2013-09-18 2013-09-19 2013-09-20 2013-09-21 2013-09-22
5 2013-09-23 2013-09-24 2013-09-25 2013-09-26 2013-09-27 2013-09-28 2013-09-29
6 2013-09-30   
也许这是从我的代码中传输data.frame的最快方法。

这应该可以:

    Mon             Tue        Wed        Thu        Fri       Sat         Sun 
1                                                                   2013-09-01
2 2013-09-02 2013-09-03 2013-09-04 2013-09-05 2013-09-06 2013-09-07 2013-09-08
3 2013-09-09 2013-09-10 2013-09-11 2013-09-12 2013-09-13 2013-09-14 2013-09-15
4 2013-09-16 2013-09-17 2013-09-18 2013-09-19 2013-09-20 2013-09-21 2013-09-22
5 2013-09-23 2013-09-24 2013-09-25 2013-09-26 2013-09-27 2013-09-28 2013-09-29
6 2013-09-30 

time.df我会尝试以下方法:

time.df<-data.frame(date=as.Date(c(time)))
time.df$day<-strftime(time.df$date,'%A')
time.df$year.week<-strftime(time.df$date,'%Y-%W') # Monday starts week.
# Just to avoid locale differences, get the names of the days of week in current locale.
dows<-strftime(seq(as.Date('2013-11-18'),(as.Date('2013-11-18')+6),by=1),'%A')
dow.order<-paste('date',dows,sep='.')
calendar<-reshape(time.df,idvar='year.week',timevar='day',direction='wide') [dow.order]
rownames(calendar)<-NULL
colnames(calendar)<-dows
calendar
#       Monday    Tuesday  Wednesday   Thursday     Friday   Saturday     Sunday
# 1       <NA>       <NA>       <NA>       <NA>       <NA>       <NA> 2013-09-01
# 2 2013-09-02 2013-09-03 2013-09-04 2013-09-05 2013-09-06 2013-09-07 2013-09-08
# 3 2013-09-09 2013-09-10 2013-09-11 2013-09-12 2013-09-13 2013-09-14 2013-09-15
# 4 2013-09-16 2013-09-17 2013-09-18 2013-09-19 2013-09-20 2013-09-21 2013-09-22
# 5 2013-09-23 2013-09-24 2013-09-25 2013-09-26 2013-09-27 2013-09-28 2013-09-29
# 6 2013-09-30       <NA>       <NA>       <NA>       <NA>       <NA>       <NA>

此外,如果年份增加,该代码将无法正常工作。它将在两个月之间留下
NA
的“空间”。您可以编写代码来避免这种情况,但这会很烦人。为了好玩,在这个问题之后,我写了。
## Your daily time series data
out <- ts(as.character(seq(as.Date("2013-9-1"),
          length.out = 30, by = 1)), 
          frequency = 7, start = c(1, 7))

## Comes in useful later
WD <- c("Monday", "Tuesday", "Wednesday", "Thursday",
        "Friday", "Saturday", "Sunday")

## Create your data as a long data.frame
## Extract the weekdays using the weekdays function
out2 <- data.frame(weekday = weekdays(as.Date(as.character(out))), out)

## Use cumsum to determine the weeks. We'll start our weeks on Monday
out2$week <- cumsum(out2$weekday == "Monday")

## This is your new "long" dataset
head(out2)
#     weekday        out week
# 1    Sunday 2013-09-01    0
# 2    Monday 2013-09-02    1
# 3   Tuesday 2013-09-03    1
# 4 Wednesday 2013-09-04    1
# 5  Thursday 2013-09-05    1
# 6    Friday 2013-09-06    1
library(reshape2)
dcast(out2, week ~ weekday, value.var="out", fill="")[WD]
#       Monday    Tuesday  Wednesday   Thursday     Friday   Saturday     Sunday
# 1                                                                   2013-09-01
# 2 2013-09-02 2013-09-03 2013-09-04 2013-09-05 2013-09-06 2013-09-07 2013-09-08
# 3 2013-09-09 2013-09-10 2013-09-11 2013-09-12 2013-09-13 2013-09-14 2013-09-15
# 4 2013-09-16 2013-09-17 2013-09-18 2013-09-19 2013-09-20 2013-09-21 2013-09-22
# 5 2013-09-23 2013-09-24 2013-09-25 2013-09-26 2013-09-27 2013-09-28 2013-09-29
# 6 2013-09-30