首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用R将时间序列数据划分为工作日和周末数据集。

使用R将时间序列数据划分为工作日和周末数据集。
EN

Stack Overflow用户
提问于 2015-10-13 13:49:09
回答 3查看 2.2K关注 0票数 0

我的数据集由两列(时间戳和power)组成:

代码语言:javascript
运行
复制
 str(df2)
'data.frame':   720 obs. of  2 variables:
 $ timestamp: POSIXct, format: "2015-08-01 00:00:00" "2015-08-01 01:00:00" " ...
 $ power    : num  124 149 118 167 130 ..

此数据集为期一个月。我想要创建两个子集-一个包含周末数据,另一个包含工作日(星期一至星期五)数据。换句话说,一个数据集应该包含与星期六和星期天相对应的数据,另一个数据集应该包含其他日子的数据。这两个子集都应该保留这两个列。我怎样才能在R中做到这一点?

我尝试使用聚合和拆分的概念,但是我不清楚聚合的函数参数(FUN),我应该如何指定dataset的除数。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-10-14 13:47:17

构建在@ShruS示例之上:

代码语言:javascript
运行
复制
df<-data.frame(timestamp=c("2015-08-01 00:00:00","2015-10-13 00:00:00", "2015-10-11 00:00:00", "2015-10-14 00:00:00"))
df$day<-strptime(df[,1], "%Y-%m-%d")
df$weekday<-weekdays(df$day)
df1 = subset(df,df$weekday == "Saturday" | df$weekday == "Sunday")
df2 = subset(df,df$weekday != "Saturday" & df$weekday != "Sunday")

> df
            timestamp        day   weekday
1 2015-08-01 00:00:00 2015-08-01  Saturday
2 2015-10-13 00:00:00 2015-10-13   Tuesday
3 2015-10-11 00:00:00 2015-10-11    Sunday
4 2015-10-14 00:00:00 2015-10-14 Wednesday

> df1
            timestamp        day  weekday
1 2015-08-01 00:00:00 2015-08-01 Saturday
3 2015-10-11 00:00:00 2015-10-11   Sunday

> df2
            timestamp        day   weekday
2 2015-10-13 00:00:00 2015-10-13   Tuesday
4 2015-10-14 00:00:00 2015-10-14 Wednesday
票数 0
EN

Stack Overflow用户

发布于 2015-10-13 16:40:50

您可以使用R基函数来完成此操作,首先使用strptime将日期数据从第一列中分离出来,然后使用函数weekdays。示例:

代码语言:javascript
运行
复制
df1<-data.frame(timestamp=c("2015-08-01 00:00:00","2015-10-13 00:00:00"),power=1:2)
df1$day<-strptime(df1[,1], "%Y-%m-%d")
df1$weekday<-weekdays(df1$day)
df1
 timestamp              power   day      weekday
 2015-08-01 00:00:00     1   2015-08-01  Saturday
 2015-10-13 00:00:00     2   2015-10-13  Tuesday
票数 1
EN

Stack Overflow用户

发布于 2015-10-14 04:54:34

最初,我尝试使用额外的库来寻找复杂的方法,但最后,我提出了一种使用R的基本方法。

代码语言:javascript
运行
复制
    #adding day column to existing set 
    df2$day <- weekdays(as.POSIXct(df2$timestamp))    
    # creating two data_subsets, i.e., week_data and weekend_data
    week_data<- data.frame(timestamp=factor(), power= numeric(),day= character())
    weekend_data<- data.frame(timestamp=factor(),power=numeric(),day= character())
    #Specifying weekend days in vector, weekend
    weekend <- c("Saturday","Sunday")
    for(i in 1:nrow(df2)){
      if(is.element(df2[i,3], weekend)){
        weekend_data <- rbind(weekend_data, df2[i,])
      } else{
        week_data <- rbind(week_data, df2[i,])
      }
    }

创建的数据集,即weekend_data和week_data是我所需的子数据集。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33104456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档