我刚开始接受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
的所有相同信息的数据框?)
答案 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')