2012-01-24 46 views
0

我剛從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的數據幀)?

回答

1

如果你(只是一天)做一次,你可以使用

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

您的示例數據沒有上週五的任何日子,所以這是一個空的數據幀。

如果您打算子集更多的日子,可能會更容易製作一週的星期列,然後再設置子集。

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

走進進一步猜測,如果您打算做同樣的事情,每個數據子集,考慮拆分申請-結合的方法對數據(與apply各種功能和plyr包,中其他)。

+0

謝謝。這幫助我完成我想要做的事情。 – bhinks

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') 
相關問題