Как вернуть подмножество фрейма данных, соответствующего проанализированной строке даты в столбце - PullRequest
0 голосов
/ 24 января 2019

У меня есть CSV-файл в формате: -

Date, Name, Age
20181021,  Name1, 80
20181022,  Name2, 79
20181023,  Name2, 79

Я прочитал файл CSV в кадре данных. Я хочу получить подмножество файла, где день - воскресенье.

Если я перебираю строки, я могу успешно видеть, что дата отображается в виде дней, используя:

 contents <- read.csv("c:/file.csv")

    for(i in 1:nrow(contents)) {
    row <- contents[i,]
    day <- weekdays(parse_date_time(toString(row$Date), orders = c("ymd")))
    print(day)
    }

Однако я бы предпочел сделать это, используя подмножество (если возможно)

sundayValues <- subset(contents , 
                       weekdays(parse_date_time(toString(contents $Date),
                       orders = c("ymd"))) == "Sunday")

Что возвращает: все форматы не удалось проанализировать. Форматы не найдены.

Я довольно новичок в R, поэтому любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Если все ваши даты в указанном формате, вы можете сделать:

dates <- c(20100101:20100130)
newdates <- paste(substr(dates, 1, 4), substr(dates, 5, 6), substr(dates, 7, 8))
sundays <- which(weekdays(as.POSIXct(newdates)) == "Sunday")

Затем вы можете подмножество, используя

data[sundays, ]
0 голосов
/ 24 января 2019

Если предположить, что кадр данных contents, воспроизводимый в примечании, в конце, используйте subset, как это.Пакеты не используются.

subset(contents, weekdays(as.Date(format(Date), "%Y%m%d")) == "Sunday")
##       Date   Name Age
## 1 20181021  Name1  80

Примечание

Lines <- "Date, Name, Age
20181021, Name1, 80
20181022, Name2, 79
20181023, Name2, 79"
contents <- read.csv(text = Lines)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...