Создание фрейма данных на основе дня недели из фрейма данных, содержащего данные за несколько месяцев - PullRequest
0 голосов
/ 24 января 2012

Я только начинаю с 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 ]

1 голос
/ 25 января 2012

Если вы делаете это один раз (всего на один день), вы можете использовать

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

В вашем примере данных нет пятницы, поэтому это пустой фрейм данных.

Если вы собираетесь использовать подмножество для большего количества дней, может быть проще сделать столбец дня недели, а затем подмножество для этого.делайте то же самое с каждым подмножеством данных, изучите подходы разделения-применения-объединения для данных (различные функции, связанные с apply и пакетом plyr, среди прочих).

0 голосов
/ 25 января 2012

Вот еще один подход, использующий 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...