从包含几个月数据的数据框创建基于星期几的数据框

时间:2012-01-24 19:09:21

标签: r date

我刚开始接受R并希望得到一些帮助。我在文件中有一组数据如下:

20111001|37|9|9
20111002|48|6|11
...
20111031|42|6|8


我已使用以下内容加载文件:

    myClasses <- c( "character", "numeric", "numeric", "numeric" )
    df <- read.table( "inputfile", FALSE, "|", colClasses=myClasses )
    names( df ) <- c( "datestamp", "cnt1", "cnt2", "cnt3" )
    df$datestamp <- as.Date( df$datestamp, "%Y%m%d" )


如何创建另一个仅包含某个工作日数据的数据框(即包含与df相同但仅适用于Fridays的所有相同信息的数据框?)

2 个答案:

答案 0 :(得分:1)

如果您这样做一次(仅一天),您可以使用

fridays <- df[format(df$datestamp, "%A") == "Friday",]

您的示例数据周五没有任何日期,因此这是一个空数据框。

如果你要分组更多天,可能更容易制作星期几列,然后对其进行分组。

df$day.of.week <- format(df$datestamp, "%A")
fridays <- df[df$day.of.week == "Friday",]

进一步猜测,如果您计划对每个数据子集执行相同的操作,请查看数据的拆分应用组合方法(与apply和{{1}相关的各种功能包等等。)

答案 1 :(得分:0)

以下是使用lubridate的另一种方法。

# READ DATA
dat <- read.table(text = 
"20111001|37|9|9
 20111002|48|6|11
 20111031|42|6|8",
 sep = "|", header = F, 
)

# FORMAT DATE COLUMN
library(lubridate)
dat <- transform(dat, V1 = ymd(V1))

# CREATE SUBSET
subset(dat, wday(V1, label = T) == 'Sat')